运行 pytest 断言整个脚本的输出
Running pytest to assert output of an entire script
在使用 pytest 单独测试脚本的功能后,我想通过提供命令行参数并让它 运行 完整地测试几个用例。然后我想将输出与我的预期输出进行比较。我可以通过 pytest 做到这一点吗?
如果我不能通过命令行输入对整个脚本执行此操作,我将不得不模拟 argparse。你能指出哪种方法最好吗?谢谢!
Python 2.7.12, pytest-3.0.2, py-1.4.31, pluggy-0.3.1
这很容易,你只需要正确的结构:
def main():
# argument parsing stuff here
...
if __name__ == '__main__':
main()
现在在您的测试中直接调用 main()
函数。 不需要 运行 一个单独的 python 进程。要模拟参数解析,您只需修补 sys.argv
。如果您的脚本依赖于任何配置文件或环境变量,您也必须 mock/patch 这些。
在使用 pytest 单独测试脚本的功能后,我想通过提供命令行参数并让它 运行 完整地测试几个用例。然后我想将输出与我的预期输出进行比较。我可以通过 pytest 做到这一点吗?
如果我不能通过命令行输入对整个脚本执行此操作,我将不得不模拟 argparse。你能指出哪种方法最好吗?谢谢!
Python 2.7.12, pytest-3.0.2, py-1.4.31, pluggy-0.3.1
这很容易,你只需要正确的结构:
def main():
# argument parsing stuff here
...
if __name__ == '__main__':
main()
现在在您的测试中直接调用 main()
函数。 不需要 运行 一个单独的 python 进程。要模拟参数解析,您只需修补 sys.argv
。如果您的脚本依赖于任何配置文件或环境变量,您也必须 mock/patch 这些。