Python unittest 测试输入(input)和输出(print),,Python 自带的


Python 自带的 unittest 库可以用来写单元测试。

测试输入输出的解决方法是:
将标准输入输出定向到一个StringIO类(python3是 io.StringIO)。

import unittestimport ioimport sysdef stub_stdin(testcase_inst, inputs):    stdin = sys.stdin    def cleanup():        sys.stdin = stdin    testcase_inst.addCleanup(cleanup)    sys.stdin = io.StringIO(inputs)def stub_stdout(testcase_inst):    stderr = sys.stderr    stdout = sys.stdout    def cleanup():        sys.stderr = stderr        sys.stdout = stdout    testcase_inst.addCleanup(cleanup)    sys.stderr = io.StringIO()    sys.stdout = io.StringIO()def fun():    x = int(input())    print(x+5)class UnitTest(unittest.TestCase):    def test_fun(self):        stub_stdin(self, '2\n4\n') # 依次输入2,4                stub_stdout(self)        fun()        self.assertEqual(str(sys.stdout.getvalue()), '7\n')                stub_stdout(self) # 重置输出        fun()        self.assertEqual(str(sys.stdout.getvalue()), '9\n')if __name__ == '__main__':    unittest.main()

Python unittest 测试输入(input)和输出(print)

评论关闭