You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在测试用例失败时让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:01