我知道 Python unittest
。我有一些使用它来测试 Python 子程序的经验。
现在我需要添加测试我用 Python 编写的命令行应用程序(不只是一个 Python 函数)。我想在 stdin 中使用特定参数和特定输入来调用它,并在 stdout 中测试输出。
如何将命令行工具与其他unittest
测试用例集成测试?
或者用什么代替 unittest
?
最佳答案
您仍然可以使用标准的 unittest
格式并将整个应用程序作为标准函数进行测试。制作一个包装器,使脚本入口点成为一个简单的包装器,例如:
if __name__ == "__main__":
sys.exit(main(sys.argv))
只要你不滥用全局变量来保持状态,你只需要测试 main()
函数。
如果你想测试你无法控制的脚本,你仍然可以使用 unittest
和 subprocess
编写如下测试:
def test_process(self):
result = subprocess.run(['your_script', 'your_args', ...], capture_output=True)
self.assertIn('expected out', result.stdout)
def test_process_failure(self):
result = subprocess.run(['your_script', 'your_args', ...], capture_output=True)
self.assertEqual(result.returncode, 1)
关于python - 如何在 Python 中测试命令行应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51736864/