Skip to main content
 首页 » 编程设计

python之模拟标准输入之python 3中的多行

2025年05月04日11Free-Thinker

我是 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): 
    ...