我正在尝试对一个可以在while语句中包含多个重复输入的函数进行单元测试:
def ask_yes_or_no(prompt):
while True:
answer = input(prompt)
if answer.capitalize()[0] == 'Y':
return True
elif answer.capitalize()[0] == 'N':
return False
def human_move(computer_score, human_score):
total = 0
roll_again = True
while roll_again:
if ask_yes_or_no('Roll again? '):
points = roll()
print('You rolled a ' + str(points))
if points == 1:
total = 0
roll_again = False
else:
total += points
else:
roll_again = False
到目前为止,我已使用mock
模块和with
语句来模拟输入。 e.g:
def test_human_move(self):
random.seed(900)
with unittest.mock.patch('builtins.input', return_value = 'N'):
self.assertEqual(human_move(0,0), 0)
然而,这仅适用于单次一次输入。有没有办法模拟重复输入>例如,如果用户输入('Y','Y','Y','N')?
很抱歉,如果这不是一个非常明确的解释。
感谢。