代码之家  ›  专栏  ›  技术社区  ›  porton

如何在Python中测试命令行应用程序?

  •  1
  • porton  · 技术社区  · 6 年前

    我认识蟒蛇 unittest . 我有一些使用它测试Python子程序的经验。

    现在我需要添加测试我的命令行应用程序( 只是一个Python函数)用Python编写。我想用stdin中的特定参数和特定输入调用它,用stdout中的测试输出调用它。

    如何将测试命令行工具与其他工具集成 单元测试 测试用例?

    或者用什么代替 单元测试 ?

    1 回复  |  直到 6 年前
        1
  •  7
  •   viraptor    6 年前

    你仍然可以使用标准 unittest 将整个应用程序格式化并作为标准函数进行测试。制作一个使脚本入口点成为简单包装器的包装器,如:

    if __name__ == "__main__":
        sys.exit(main(sys.argv))
    

    只要你不滥用全局变量来保持状态,你只需要测试 main() 功能。

    如果你想测试你无法控制的脚本,你仍然可以使用 单元测试 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)