python - 从 python 捕获 pytest 的退出代码
问题描述
运行 python.main() 时,任何失败的单元测试都不会将退出代码 1 返回到调用测试的 python 模块。
在这里说,运行pytest不会引发系统退出,但是有没有办法让失败的单元测试表现相同或允许将代码(1)返回给调用函数?
解决方案
pytest.main()
将返回其退出代码——它是一个ExitCode
enum,从 pytest 5.0.0 开始。如果测试失败,ExitCode.TESTS_FAILED
将被退回;如果所有测试都通过,ExitCode.OK
将返回。
顺便说一句,这些枚举的整数值实际上是从终端运行时使用的退出代码。这是 的来源site-packages/pytest/__main__.py
,如果python -m pytest
用于调用测试,则会执行:
import pytest
if __name__ == "__main__":
raise SystemExit(pytest.main())
(py.test
或pytest
)入口点脚本大体相同
import re
import sys
from pytest import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
推荐阅读
- android - Google Play 控制台,内部测试版本从真实设备发回分析数据,可以吗?
- jboss - Wildfly 战争部署超时错误:WFLYCTL0348
- android - 发送参数和正文行空改造
- javascript - 解析excel表UI端(反应)与服务器端(java):正确的方法是什么?
- php - .tpl 文件在进行更改时不更新
- mongodb - pymongo UpdateOne 不更新一个字段,而是做另一个
- jquery - 使每个选择进入 Select2
- mongodb - MongoDB:杀死 mongoDB 中所有耗时过长且超过特定等待时间的任务
- javascript - 为首屏 DOM 元素初始化 JavaScript 的最佳实践
- android - 我想在 kivy 中使用 Android 默认的后退按钮