我一直在尝试使用此功能在Pytest中测试输入列表
def test_play_hand():
word_list = load_words()
hand = {'e': 2, 'u': 1, 'g': 1, 'm': 1, 'b': 1, 't': 1}
inputs = ['gum', 'beet', '.']
with mock.patch('builtins.input', return_value= next(iter(inputs))):
assert play_hand(hand, word_list) == 0
函数play_hand运行基于哨兵的while循环,该循环获取字典,然后要求用户输入字符串。
如果输入为.
,则循环结束。
否则,如果循环获得一个字符串,它将检查指针和可用字符,并从指针中删除字符串中使用的字符。
mock.patch仅获得一个输入时,该测试有效。
如何使用列表或多个输入进行测试以实施测试?
如果没有iter(),它将给出不可迭代的输入错误,而使用iter(),它将冻结。
我非常感谢您的投入。
编辑:忘记提及play_hand返回一个整数
答案 0 :(得分:0)
找到了答案。
def test_play_hand():
word_list = load_words()
hand = {'e': 2, 'u': 1, 'g': 1, 'm': 1, 'b': 1, 't': 1}
inputs = ['gum', 'beet', '.']
with mock.patch('builtins.input', side_effect = inputs) :
assert play_hand(hand, word_list) == 12
我必须将return_value
替换为side_effect
才能运行测试中的所有输入。