For an assignment I am trying to test whether a ValueError exception is raised depending on user input
Here is my program that I am testing:
def prompt_num_integers():
while True:
try:
# converting to int raises ValueError if input can't convert
num_of_integers = int(input("How many integers do you want to store: "))
if num_of_integers < 1:
raise ValueError
except ValueError:
print("Sorry, I didn't quite understand that.")
continue
else:
return num_of_integers
def prompt_integers():
# prompt user for number of integers then store that value into a variable
num_of_integers = prompt_num_integers()
# list for storing the integers
integer_list = []
# integer for keeping count of current num of integers
x = 0
while x < num_of_integers:
try:
# check if current num of integer equals total num of integers wanted, then give appropriate prompt
if x == num_of_integers - 1:
integer = int(input("Input last integer: "))
else:
integer = int(input("Input integer: "))
except ValueError:
print("Sorry, I didn't quite understand that.")
continue
else:
# add correct integer to integer list, then update current num of integers variable
integer_list.append(integer)
x += 1
print(f"List of integers: {integer_list}")
return integer_list
And here is my unit test:
import unittest
import unittest.mock as mock
import GatheringInputFunctionsKing as Test
class MyTestCase(unittest.TestCase):
def test_a_function_throws_exception(self):
with mock.patch('builtins.input', side_effect=[0,1,1]):
self.assertRaises(ValueError, Test.prompt_integers)
Even when testing just the function prompt_num_integers, I get the same result... The test just results with FAILED:
Ran 1 test in 0.004s
FAILED (failures=1)
Failure
Traceback (most recent call last):
File "C:\Users\Sam\PycharmProjects\CIS289_Module1\Test_GatheringInputFunctions.py", line 10, in test_a_function_throws_exception
self.assertRaises(ValueError, Test.prompt_integers)
AssertionError: ValueError not raised by prompt_integers
source https://stackoverflow.com/questions/77822563/test-if-exception-is-thrown-from-a-function-that-accepts-user-input
Comments
Post a Comment