【发布时间】:2020-06-30 00:44:49
【问题描述】:
运行 python.main() 时,任何失败的单元测试都不会将退出代码 1 返回到调用测试的 python 模块。
声明 here,运行 pytest 不会引发系统退出,但有没有办法让失败的单元测试表现相同或允许将代码 (1) 返回到调用函数?
【问题讨论】:
-
exit(pytest.main())
运行 python.main() 时,任何失败的单元测试都不会将退出代码 1 返回到调用测试的 python 模块。
声明 here,运行 pytest 不会引发系统退出,但有没有办法让失败的单元测试表现相同或允许将代码 (1) 返回到调用函数?
【问题讨论】:
exit(pytest.main())
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())
【讨论】: