概述

文档

Documentation Status

测试

GitHub Actions Status

PyPI Package latest release conda-forge PyPI Wheel Supported versions Supported implementations Commits since latest release

此插件生成覆盖率报告。与仅使用 coverage run 相比,此插件还执行一些额外操作

  • 子进程支持:您可以派生或在子进程中运行内容,并且无需任何麻烦即可获得覆盖率。

  • Xdist 支持:您可以使用 pytest-xdist 的所有功能,并且仍然获得覆盖率。

  • 一致的 pytest 行为。如果您运行 coverage run -m pytest,您将拥有略微不同的 sys.path(CWD 将在其中,与运行 pytest 不同)。

覆盖率包提供的所有功能都应该可以工作,可以通过 pytest-cov 的命令行选项或通过覆盖率的配置文件来使用。

  • 自由软件:MIT 许可证

安装

使用 pip 安装

pip install pytest-cov

对于分布式测试支持,请安装 pytest-xdist

pip install pytest-xdist

从旧版 pytest-cov 升级

pytest-cov 2.0 使用了一个新的 .pth 文件(pytest-cov.pth)。您可能需要手动从 site-packages 中删除旧的 init_cov_core.pth,因为它不会自动删除。

卸载

使用 pip 卸载

pip uninstall pytest-cov

在某些情况下,site-packages 中可能会留下一个杂散的 .pth 文件。

  • pytest-cov 2.0 可能会留下一个 pytest-cov.pth,如果您在没有使用 wheel 的情况下安装(easy_installsetup.py install 等)。

  • pytest-cov 1.8 或更旧版本 将留下一个 init_cov_core.pth

用法

pytest --cov=myproj tests/

将生成类似以下的报告

-------------------- coverage: ... ---------------------
Name                 Stmts   Miss  Cover
----------------------------------------
myproj/__init__          2      0   100%
myproj/myproj          257     13    94%
myproj/feature4286      94      7    92%
----------------------------------------
TOTAL                  353     20    94%

文档

覆盖率数据文件

测试开始时会擦除数据文件,以确保每次测试运行都有干净的数据。如果您需要组合多次测试运行的覆盖率,可以使用 --cov-append 选项将此覆盖率数据附加到先前测试运行的覆盖率数据中。

测试结束后会保留数据文件,以便可以使用正常的覆盖率工具检查它。

限制

对于分布式测试,工作节点必须安装 pytest-cov 包。这是必需的,因为插件必须通过 setuptools 注册,以便 pytest 在工作节点上启动插件。

对于子进程测量,环境变量必须从主进程传递到子进程。子进程使用的 Python 必须安装 pytest-cov。子进程必须执行正常的站点初始化,以便可以检测到环境变量并启动覆盖率。有关此工作原理的更多详细信息,请参阅子进程支持文档

安全性

要报告安全漏洞,请使用Tidelift 安全联系人。Tidelift 将协调修复和披露。

鸣谢

虽然此插件是从头开始构建的,但它受到 pytest-coverage(Ross Lawley、James Mills、Holger Krekel)和 nose-cover(Jason Pellerin)的工作影响,它们也是其他覆盖率插件。

Ned Batchelder 贡献了 coverage,以及它组合并行运行的覆盖率结果的能力。

Holger Krekel 贡献了 pytest 及其分布式测试支持。

Jason Pellerin 贡献了 nose。

Michael Foord 贡献了 unittest2。

毫无疑问,其他人也为这些工具做出了贡献。