如果测试覆盖率低于 x%,是否有标准的方法使 pytest 失败

Stu*_*Cat 5 python code-coverage pytest

现在我运行的方式是我有一组用 pytest 编写的测试用例,如果它们失败了,我就会修复并返工。如果他们通过,我使用 pytest-cov 来获取覆盖率并手动决定覆盖率是否足够好。我想知道如果覆盖阈值低于 x 数量,pytest 是否有可能失败。

pytest --cov=myproject tests --cov-report=html
coverage report --fail-under=80
....
myproject/services/subnet.py                                                                        36     33     8%
myproject/severity.py                                                                                5      0   100%
--------------------------------------------------------------------------------------------------------------------
TOTAL                                                                                             8843   8739     1%
....
Run Code Online (Sandbox Code Playgroud)

Ned*_*der 19

您应该使用 pytest 来运行测试,如果测试失败则失败。然后使用coverage来评估承保金额,如果低于以下情况则失败:

pytest --cov=mypackage --cov-report= tests-or-whatever
coverage report --fail-under=80
Run Code Online (Sandbox Code Playgroud)

  • 如果总数太低,“覆盖率报告”将以失败状态退出。但现在您提到了它,显然它还应该在输出中显示一条消息。我写了一个问题:https://github.com/nedbat/coveragepy/issues/904 (2认同)

Max*_*ils 19

如果您正在使用pytest-cov,您可以使用--cov-fail-under=MIN

pytest --cov-fail-under=80 [...]
Run Code Online (Sandbox Code Playgroud)