概述¶
此插件生成覆盖率报告。与仅使用 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_install
、setup.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。
毫无疑问,其他人也为这些工具做出了贡献。