如何在测试用例失败时让pytest.main()返回非零退出码
问题根因
你遇到的返回值不符合预期的核心问题是:pytest.main()本身已经会按照执行结果返回对应退出码,但你的脚本入口没有将main()函数的返回值传递给系统退出接口,无论main()返回什么值,Python脚本默认退出码都是0,所以tox会误判为所有测试执行成功。
pytest 自带的ExitCode枚举本身已经符合你要求的规则,无需额外自定义:
0:所有测试用例执行通过1:存在测试用例执行失败2:测试被手动中断(Ctrl+C触发)3:pytest 内部执行错误4:命令行参数配置错误
修复方案
修改你的脚本入口代码,将main()的返回值传入sys.exit()即可:
原来的入口代码:
if __name__ == '__main__': main()
修改为:
if __name__ == '__main__': sys.exit(main())
验证效果
修改完成后重新运行测试,只要存在任意用例失败,脚本就会返回非零值,tox也会正确识别到测试任务失败。
内容的提问来源于stack exchange,提问作者Ranserunoputo
相关产品推荐
相关产品推荐

