测量覆盖率的pytest插件。
项目描述
docs |
|
---|---|
tests |
|
package |
此插件生成覆盖率报告。与仅使用 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 文件。
如果您使用无 wheel 的方式安装(如 easy_install,setup.py install 等),pytest-cov 2.0 可能会留下 pytest-cov.pth。
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。子进程必须执行正常的 site 初始化,以便检测环境变量并开始覆盖率。
致谢
虽然这个插件是从头开始构建的,但它受到了 pytest-coverage(Ross Lawley,James Mills,Holger Krekel)和 nose-cover(Jason Pellerin)等其他覆盖率插件工作的启发。
Ned Batchelder 为覆盖率及其合并并行运行覆盖率结果的能力。
Holger Krekel 为 pytest 及其分布式测试支持。
Jason Pellerin 为 nose。
Michael Foord 为 unittest2。
无疑还有其他人也为这些工具做出了贡献。
变更日志
5.0.0 (2024-03-24)
4.1.0 (2023-05-24)
使用新的 Pythons 和依赖项更新 CI。
移除了 rsyncdir 支持。这使得 pytest-cov 与 xdist 3.0 兼容。由 Sorin Sbarnea 在 #558 中贡献。
优化了摘要生成,以便在没有激活报告的情况下不执行(例如,当使用 --cov-report='' 而不使用 --cov-fail-under 时)。由 Jonathan Stewmon 在 #589 中贡献。
添加了对 JSON 报告的支持。由 Matthew Gamble 在 #582 中贡献。
重构代码以使用f-string。由Mark Mayo在#572中贡献。
修复了测试套件中某些旧xdist的跳过问题。由多位人员在#565中贡献。
4.0.0 (2022-09-28)
请注意,此版本不再支持多进程。
–cov-fail-under不再导致pytest –collect-only失败。由Zac Hatfield-Dodds在#511中贡献。
删除了对多进程的支持(主要是因为问题82408)。此功能在大多数情况下工作正常,但在某些场景下非常不正常,使得测试套件非常不稳定且速度缓慢。
Coverage中内置了对多进程的支持,您可以通过以下方式迁移。您只需要在您的.coveragerc中添加以下内容
[run] concurrency = multiprocessing parallel = true sigterm = true
通过尝试在distutils之前导入setuptools来修复setup.py中的弃用问题。由Ben Greiner在#545中贡献。
在报告禁用时删除了不希望显示的新行。由Delgan在#540中贡献。
通过–cov-report=lcov添加了对LCOV输出格式的支持。仅适用于coverage 6.3+。由Christian Fetzer在#536中贡献。
现代化了pytest钩子实现。由Bruno Oliveira在#549和Ronny Pfannschmidt在#550中贡献。
3.0.0 (2021-10-04)
请注意,此版本不再支持Python 2.7和Python 3.5。
添加了对Python 3.10的支持,并更新了各种测试依赖项。由Hugo van Kemenade在#500中贡献。
从Travis CI切换到GitHub Actions。由Hugo van Kemenade在#494和#495中贡献。
添加了一个--cov-reset CLI选项。由Danilo Šegan在#459中贡献。
改进了--cov-fail-under CLI选项的验证。由Ronny Pfannschmidt对skark的需求在#480中贡献。
删除了对Python 2.7的支持。由Thomas Grainger在#488中贡献。
更新了trove分类器。由Michał Bielawski在#481中贡献。
撤销了对toml要求的更改。由Thomas Grainger在#477中贡献。
2.12.1 (2021-06-01)
将toml要求更改为始终直接要求(而不是通过coverage extra要求)。这解决了pip-compile(pip-tools#1300)的问题。由Sorin Sbarnea在#472中贡献。
记录了show_contexts。由Brian Rutledge在#473中贡献。
2.12.0 (2021-05-14)
2.11.1 (2021-01-20)
修复了对较新setuptools(v42+)的支持。由Michał Górny贡献,提交于#451。
2.11.0 (2021-01-18)
将最低覆盖率要求提升至5.2.1。这防止了问题的报告。由Mateus Berardo de Souza Terra贡献,提交于#433。
改进了示例项目(来自examples 目录),以支持运行tox -e pyXY。现在示例配置了一个后缀的覆盖率数据文件,这使得清理环境变得不必要。由Ganden Schaffner贡献,提交于#435。
移除了引起某些Gentoo构建脚本混淆的空 console_scripts 入口。我没有询问为什么它如此破损,因为我不想破坏我的心情。由Michał Górny贡献,提交于#434。
修复了使用子进程时缺失的 coverage context。由Bernát Gábor贡献,提交于#443。
更新了文档中的配置部分。由Pamela McA’Nulty贡献,提交于#429。
将CI迁移到travis-ci.com(从.org)。
2.10.1 (2020-08-14)
支持 pytest-xdist 2.0,它破坏了与1.22.3(2017年之前)之前版本的 pytest-xdist 的兼容性。由Zac Hatfield-Dodds贡献,提交于#412。
修复了在行内模式中使用 pytester 插件时发生的 LocalPath has no attribute startswith 失败。
2.10.0 (2020-06-12)
改进了 --no-cov 警告。现在只有在 --no-cov 在 --cov 之前时才会显示。
移除了旧版本的pytest支持。修改了 setup.py,使其要求 pytest>=4.6。
2.9.0 (2020-05-22)
修复了使用Pytest 3.10时发生的 RemovedInPytest4Warning。由Michael Manganiello贡献,提交于#354。
通过延迟导入使pytest启动更快,当插件不活动时。由Anders Hovmöller贡献,提交于#339。
各种Python支持更新(弃用EOL 3.4,测试3.8最终版)。由Hugo van Kemenade贡献,提交于#336 和 #367。
将 --cov-append 改为始终启用 data_suffix(覆盖率设置)。由Harm Geerts贡献,提交于#387。
将 --cov-append 改为更好地处理加载先前数据(修复了各种路径别名问题)。
各种其他测试改进,github问题模板,示例更新。
修复了由于测试更改当前工作目录而引起的内部失败,确保在调用覆盖率时有一个一致的工作目录。请参阅 #306 和 coveragepy#881
2.8.1 (2019-10-05)
修复了 #348 - 仅使用某些报告(html或xml)时,--cov-fail-under 总是失败的回归问题。
2.8.0 (2019-10-04)
修复了使用 cleanup_on_signal 或 cleanup_on_sigterm 时可能发生的 RecursionError。请参阅: #294。pytest-cov的2.7.x版本应被视为与上述清理API相关的损坏。
增加了与未来xdist版本的兼容性,该版本废弃了一些内部功能(匹配pytest-xdist主/工作术语)。由Thomas Grainger贡献,参考#321
修复了在使用多个报告选项时出现的损坏。由Thomas Grainger贡献,参考#338。
将内部功能改为使用stub而不是os.devnull。由Thomas Grainger贡献,参考#332。
增加了对Coverage 5.0的支持。由Ned Batchelder贡献,参考#319。
增加了在--cov-fail-under中使用浮点值的支持。由Martín Gaitán贡献,参考#311。
修复了各种文档问题。由Juanjo Bazán、Andrew Murray和Albert Tugushev贡献,参考#298、#299和#307。
各种测试改进。由Ned Batchelder、Daniel Hahler、Ionel Cristian Mărieș和Hugo van Kemenade贡献,参考#313、#314、#315、#316、#325、#326、#334和#335。
添加了--cov-context CLI选项,以启用覆盖上下文。仅与Coverage 5.0+兼容。由Ned Batchelder贡献,参考#345。
2.7.1 (2019-05-03)
修复了源分发清单,以确保tarball中不包含垃圾。
2.7.0 (2019-05-03)
2.6.1 (2019-01-07)
2.6.0 (2018-09-03)
放弃了支持Python 3 < 3.4、Pytest < 3.5和Coverage < 4.4。
修复了一些文档格式问题。由Jean Jordaan和Julian贡献。
在文档中添加了带有addopts的示例。由Samuel Giffard在#195中贡献。
修复了某些xdist配置中的TypeError: 'NoneType' object is not iterable错误。由Jeremy Bowman在#213中贡献。
添加了no_cover标记和fixture。修复了#78。
修复了运行doctests时断开的no_cover检查。由Terence Honles在#200中贡献。
修复了报告中路径归一化的问题(在并行模式下合并覆盖率数据时)。修复了#130。由Ryan Hiebert和Ionel Cristian Mărieș在#178中贡献。
报告生成失败不再引发异常。而是记录警告。修复了#161。
修复了Windows上的多进程问题(空环境变量不会被传递)。修复了#165。
2.5.1 (2017-05-11)
2.5.0 (2017-05-09)
2.4.0 (2016-10-10)
2.3.1 (2016-08-07)
2.3.0 (2016-07-05)
添加了对指定html、xml和annotate报告输出位置的支持。由Patrick Lannigan在PR#113中贡献。
修复了cov-fail-under失败时隐藏测试失败的bug。
对于覆盖率 >= 4.0,匹配coverage report的默认行为,如果覆盖率无法找到源则报错,而不是仅仅打印警告。由David Szotten在PR#116中贡献。
修复了使用裸--cov参数与xdist一起使用时发生的bug。由Michael Elovskikh在PR#120中贡献。
增加对skip_covered的支持,并添加了--cov-report=term-skip-covered命令行选项。由Saurabh Kumar在PR#115中贡献。
2.2.1 (2016-01-30)
修复了使用xdist时覆盖数据合并错误的问题,且覆盖率>= 4.0。
2.2.0 (2015-10-04)
增加了在测试中更改工作目录的支持。以前更改工作目录会禁用子进程中的覆盖率测量。
修复了处理--cov-report=annotate时的错误。
2.1.0 (2015-08-23)
增加了对coverage 4.0b2的支持。
添加了--cov-append命令行选项。由Christian Ledermann在PR#80中贡献。
2.0.0 (2015-07-28)
添加了--cov-fail-under,类似于coverage-4.0中的新fail_under选项(如果.coveragerc中有[report] fail_under = ...则自动激活)。
将--cov-report=term更改为在.coveragerc中有[run] show_missing = True时自动升级到--cov-report=term-missing。
更改了--cov,使其在没有路径参数的情况下可以使用(在这种情况下,将使用.coveragerc中的源设置)。
修复了.pth安装,使其在所有情况下(安装、easy_install、wheels、开发等)都能正常工作。
修复了.pth卸载,使其适用于wheel安装。
支持coverage 4.0。
数据文件后缀更改以使用coverage的data_suffix=True选项(而不是自定义后缀)。
避免关于缺失覆盖率数据的警告(就像coverage.control.process_startup)。
修复了运行xdist时的竞争条件(所有工作都尝试合并文件)。这个问题可能在pytest-cov 1.8.X中不存在。
1.8.2 (2014-11-06)
N/A
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。
源分发
构建版本
pytest-cov-5.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857 |
|
MD5 | 89c1d20d12d0b3f46d3a83a73fb9b129 |
|
BLAKE2b-256 | 746700efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2 |
pytest_cov-5.0.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652 |
|
MD5 | 6f710a68749eb208bc3ae6367481e264 |
|
BLAKE2b-256 | 783aaf5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf |