配置

此插件提供了一组简洁的最小命令行选项,这些选项会添加到 pytest 中。若要进一步控制覆盖率,请使用覆盖率配置文件。

例如,如果测试包含在正在测量的目录树中,则可以使用带有设置了 omit 选项的 .coveragerc 文件,根据需要排除测试。

pytest --cov-config=.coveragerc
       --cov=myproj
       myproj/tests/

其中 .coveragerc 文件包含文件通配符

[run]
omit = tests/*

有关完整详细信息,请参阅 覆盖率配置文件 文档。

注意

重要提示

此插件覆盖了 coverage 的 parallel 选项。除非您还在不使用 pytest-cov 的情况下运行 coverage,否则在 .coveragerc 中设置这些选项毫无意义。

如果您使用 --cov=something 选项(带值),那么 coverage 的 source 选项也将被覆盖。如果您有多个源,则可能更容易在 .coveragerc 中设置它们,并始终使用 --cov(不带值),而不是使用带有 --cov=pkg1 --cov=pkg2 --cov=pkg3 ... 的长命令行。

如果您使用 --cov-branch 选项,那么 coverage 的 branch 选项也将被覆盖。

如果您希望始终使用 pytest 添加 pytest-cov,则可以在 setup.cfgpytesttool:pytest 部分,或 pyproject.toml 文件的 tool.pytest.ini_options 部分使用 addopts

例如,在 setup.cfg

[tool:pytest]
addopts = --cov=<project-name> --cov-report html

或对于 pyproject.toml

[tool.pytest.ini_options]
addopts = "--cov=<project-name> --cov-report html"

注意事项

coverage.py 历史的一个不幸后果是 .coveragerc 是一个魔术名称:它是默认文件,但也意味着“尝试在 tox.inisetup.cfg 中查找覆盖率配置”。

实际上,这意味着如果您周围有多个配置文件(tox.inipyproject.tomlsetup.cfg),则可能需要使用 --cov-config 使 coverage 使用正确的配置文件。

此外,如果您更改工作目录并在测试中也使用子进程,则可能还需要使用 --cov-config 使 pytest-cov 在子进程中使用预期的配置文件。

参考

命令行选项的完整列表如下所示

--cov=PATH

测量文件系统路径的覆盖率。(可多次使用)

--cov-report=type

要生成的报告类型:term、term-missing、annotate、html、xml、json、lcov(可多次使用)。term、term-missing 后面可以跟“:skip-covered”。annotate、html、xml、json 和 lcov 后面可以跟“:DEST”,其中 DEST 指定输出位置。使用 –cov-report= 不生成任何输出。

--cov-config=path

覆盖率的配置文件。默认值:.coveragerc

--no-cov-on-fail

如果测试运行失败,则不报告覆盖率。默认值:False

--no-cov

完全禁用覆盖率报告(对调试器有用)。默认值:False

--cov-reset

重置迄今为止在选项中累积的 cov 源。主要对脚本和配置文件有用。

--cov-fail-under=MIN

如果总覆盖率低于 MIN,则失败。

--cov-append

不删除覆盖率,而是追加到当前覆盖率。默认值:False

--cov-branch

启用分支覆盖率。

--cov-context

选择设置动态上下文的方法。