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