【问题标题】:Capture exit code for pytest from python从 python 捕获 pytest 的退出代码
【发布时间】:2020-06-30 00:44:49
【问题描述】:

运行 python.main() 时,任何失败的单元测试都不会将退出代码 1 返回到调用测试的 python 模块。

声明 here,运行 pytest 不会引发系统退出,但有没有办法让失败的单元测试表现相同或允许将代码 (1) 返回到调用函数?

【问题讨论】:

  • exit(pytest.main())

标签: python pytest


【解决方案1】:

pytest.main() 将返回它的退出代码——an 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())

【讨论】:

    猜你喜欢
    • 2022-06-13
    • 2023-02-21
    • 1970-01-01
    • 2012-08-19
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多