跳转到主要内容

测量覆盖率的pytest插件。

项目描述

docs

Documentation Status

tests

GitHub Actions Status

package

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 文件。

  • 如果您使用无 wheel 的方式安装(如 easy_installsetup.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%

文档

https://cov.pytest.cn/en/latest/

覆盖率数据文件

测试开始时,数据文件会被清除以确保每个测试运行的数据是干净的。如果您需要合并多个测试运行的覆盖率,可以使用 --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)

  • 移除了对 xdist rsync 的支持(现在已弃用)。由 Matthias Reichenbach 在 #623 中贡献。

  • 将文档主题切换到 Furo。

  • 进行了各种遗留 Python 清理和 CI 改进。由 Christian Clauss 和 Hugo van Kemenade 在 #630#631#632#633 中贡献。

  • 在文档中添加了 pyproject.toml 示例。由 Dawn James 在 #626 中贡献。

  • 改进了项目的 pre-commit 钩子,以使用 ruff。由 Christian Clauss 在 #584 中贡献的初始 POC。

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中贡献。

  • 文档修复。由Andre Brisco在#543和Colin O’Dell在#525中贡献。

  • 通过–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)

  • 将coverage的toml额外功能添加到setup.py中,用于安装需求。由Christian Riedel在#410中贡献。

  • 修复了pytest_cov.__version__以具有正确的值(包含版本的字符串而不是包含__version__ =的字符串)。

  • 修复了setup.py中的许可证分类器。由Chris Sreesangkom在#467中贡献。

  • 修复了“自...以来已提交”徽章。由Terence Honles贡献,提交于#470

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

  • 各种CI改进。由Daniel Hahler贡献,提交于#363#364

  • 各种Python支持更新(弃用EOL 3.4,测试3.8最终版)。由Hugo van Kemenade贡献,提交于#336#367

  • --cov-append 改为始终启用 data_suffix(覆盖率设置)。由Harm Geerts贡献,提交于#387

  • --cov-append 改为更好地处理加载先前数据(修复了各种路径别名问题)。

  • 各种其他测试改进,github问题模板,示例更新。

  • 修复了由于测试更改当前工作目录而引起的内部失败,确保在调用覆盖率时有一个一致的工作目录。请参阅 #306coveragepy#881

2.8.1 (2019-10-05)

  • 修复了 #348 - 仅使用某些报告(html或xml)时,--cov-fail-under 总是失败的回归问题。

2.8.0 (2019-10-04)

  • 修复了使用 cleanup_on_signalcleanup_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)

  • 修复了使用--no-cov时出现的AttributeError: 'NoneType' object has no attribute 'configure_node'错误。由Alexander Shadchin贡献,参考#263

  • 各种测试和CI改进。由Daniel Hahler贡献,参考#255#266#272#271#269

  • 改进了pytest_cov.embed.cleanup_on_sigterm以使其可重入(在信号处理运行期间发送信号不会破坏东西)。

  • 添加了pytest_cov.embed.cleanup_on_signal以进行自定义清理。

  • 改进了清理代码并修复了与残留数据文件相关的各种问题。所有贡献都在#265#262中。

  • 改进了示例。现在有两个针对常见项目布局的示例,包括完整的覆盖配置。示例包含CI测试。由贡献#267

  • 改进了CLI选项的帮助文本。

2.6.1 (2019-01-07)

  • 增加了对Pytest 4.1的支持。由Daniel Hahler和Семён Марьясин贡献,参考#253#230

  • 各种测试和文档修复。由Daniel Hahler贡献,参考#224#223

  • 修复了“已导入模块”问题(#211)。由Daniel Hahler贡献,参考#228

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)

  • 修复了xdist中断(2.5.0版本中的回归)。修复了#157

  • 允许在.coveragerc中设置自定义的data_file名称。修复了#145。由Jannis Leidel和Ionel Cristian Mărieș在#156中贡献。

2.5.0 (2017-05-09)

  • 当使用--cov-fail-under时,始终显示摘要。由Francis Niu在PR#141中贡献。

  • 添加了--cov-branch选项。修复了#85

  • 改进了子进程设置中的异常处理。修复了#144

  • 修复了多次使用--cov时的处理。修复了#151

2.4.0 (2016-10-10)

  • 添加了一个“解除武装”选项:--no-cov。它将禁用覆盖率测量。由Zoltan Kozma在PR#135中贡献。

    警告:不要将此放入您的配置文件中,它旨在用于您想要从命令行禁用覆盖率的情况。

  • 修复了.pth文件上的异常处理问题。见#136

2.3.1 (2016-08-07)

  • 修复了xdist使用时导致虚假错误的回归问题。见#124

  • 修复了关于不正确使用addoptionDeprecationWarning。由Florian Bruhin在PR#127中贡献。

  • 修复了过时使用funcarg fixture API的问题。由Daniel Hahler在PR#125中贡献。

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 (63.0 kB 查看哈希值)

上传于 来源

构建版本

pytest_cov-5.0.0-py3-none-any.whl (22.0 kB 查看哈希)

上传于 Python 3

由以下支持