我是 python 的新手,一直在使用 python 3 进行学习。我正在使用 python 的单元测试框架来测试我的代码。
问题:-
我需要进行单元测试的函数以下列方式接受输入:-
def compare():
a, b, c = input().strip().split(' ')
d, e, f = input().strip().split(' ')
# other code here
我正在使用以下测试用例来模拟输入:-
class TestCompare(unittest.TestCase):
@patch("builtins.input", lambda: "1 2 3")
@patch("builtins.input", lambda: "4 5 6")
def test_compare(self):
self.assertEqual(compare(), "1 1")
我面临的问题是,当测试用例运行时,变量三元组 a、b、c 和 d、e、f 具有相同的值 - 1、2、3
我一直在尝试寻找一种方法来注入(inject)第二组输入来运行我的测试,但没有成功。
非常感谢与上述相关的任何帮助。
解决方案环境:- Python 3
最佳答案
你不能像那样修补它两次。您必须使用一个在后续调用中返回不同值的对象来修补它一次。这是一个例子:
fake_input = iter(['1 2 3', '4 5 6']).__next__
@patch("builtins.input", fake_input)
def test_compare(self):
...
关于python - 模拟标准输入 - python 3中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908390/