运行pytest来断言整个脚本的输出

时间:2016-09-12 13:44:36

标签: python-2.7 testing pytest

在使用pytest分别测试脚本函数之后,我想通过提供命令行参数并让它完整运行来测试几个用例。然后我想将输出与我预期的输出进行比较。我可以通过pytest做到吗?

如果我不能通过命令行输入对整个脚本执行此操作,我必须模拟argparse。你能指出哪种方法最好吗?谢谢!

Python 2.7.12, pytest-3.0.2, py-1.4.31, pluggy-0.3.1

1 个答案:

答案 0 :(得分:1)

这很容易,你只需要正确构建:

def main():
    # argument parsing stuff here
    ...

if __name__ == '__main__':
    main()

现在在您的测试中直接调用main()函数。运行单独的python进程是必需的。要模拟参数解析,您只需要修补sys.argv。如果您的脚本依赖于任何配置文件或环境变量,那么您也必须模拟/修补它们。