如何在python单元测试中修补多个重复输入?

时间:2017-11-10 13:15:55

标签: python unit-testing

我正在尝试对一个可以在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')?

很抱歉,如果这不是一个非常明确的解释。

感谢。

0 个答案:

没有答案