Python 中的简单单元测试来检查输入和预期输出



我在Python中有这个简单的程序(hello.py(:

name=input()
print("Hello " + name)

就这么简单,没有类,没有函数,什么都没有,只有一个输入和相应的输出。

我的目标只是创建test_hello.py,一个用于hello.py的测试文件。我花了几个小时在互联网上搜索,但我只找到了函数或方法的单元测试,而不是简单的输入和输出程序。有什么线索吗?提前非常感谢!

注意:堆栈溢出表明有一个答案:如何在python中使用nosetest/unittest断言输出? 但是这两个问题非常不同,我的代码中没有函数,并且有一个input()。在"答案"中建议的代码位于函数内部,没有input()

最后,我想出了解决方案:

import unittest
import os
import subprocess
class TestHello(unittest.TestCase):
def test_case1(self):
input = "Alan"
expected_output = "Hello Alan"
with os.popen("echo '" + input + "' | python hello.py") as o:
output = o.read()
output = output.strip() # Remove leading spaces and LFs
self.assertEqual(output, expected_output)
def test_case2(self):
input = "John"
expected_output = "Hello John"
with os.popen("echo '" + input + "' | python hello.py") as o:
output = o.read()
output = output.strip() # Remove leading spaces and LFs
self.assertEqual(output, expected_output)
if __name__ == '__main__':
unittest.main()

我有两个测试用例:"Alan"必须打印"Hello Alan",John必须打印"Hello John"。

谢谢大家的线索!

我真的建议使用类或函数,但如果你坚持,那么你可以尝试在子进程中使用它并捕获输出

这可能会有所帮助

最新更新