具有线路覆盖率和最小限制的 Pytest 覆盖率,如业力/伊斯坦布尔

Posted

技术标签:

【中文标题】具有线路覆盖率和最小限制的 Pytest 覆盖率,如业力/伊斯坦布尔【英文标题】:Pytest coverage with line coverage and minimum limits like karma/Istanbul 【发布时间】:2019-05-13 10:08:36 【问题描述】:
    在 Karma 的 Instanbul 覆盖模块中,您可以为不同类型的覆盖设置阈值。如果某些覆盖率未达到其最小值,则 instanbul 会引发错误。这在使用 jenkins 构建项目时非常有用,您必须保持这样的限制。是否可以使用 pytest-cov 或任何其他模块获得类似的功能?

https://ibb.co/y4J3JrG

    pytest-cov 仅生成语句覆盖率。是否也可以获得行/代码覆盖率?

【问题讨论】:

【参考方案1】:

Coverage.py(它是 pytest-cov 的引擎)具有总覆盖率的阈值,但没有针对不同测量的单独阈值。查看--fail-under 选项。

Coverage.py 可以测量语句覆盖率和分支覆盖率。您提到“行”覆盖率和“代码”覆盖率:我不知道它们与语句覆盖率有何不同。

【讨论】:

感谢您的回复。好吧,我发现语句覆盖率与行不同,因为有许多带有 EOL 标记的语言在 f.ex 行中可以有多个语句。 x = 4 ; y = x + 10;。但是 python offcourse 不能这样做,所以我们可以假设 statements = lines。但是仍然不知道如何显示分支机构覆盖率的百分比。我只在 TOTAL 分支中看到了数字,但它们涵盖了多少?我不知道。【参考方案2】:

您可以通过以下方式找到您需要的选项:

pytest --help

--cov-fail-under=MIN 如果总覆盖率小于 MIN 则失败。

【讨论】:

以上是关于具有线路覆盖率和最小限制的 Pytest 覆盖率,如业力/伊斯坦布尔的主要内容,如果未能解决你的问题,请参考以下文章

Pytest 和覆盖率:为啥覆盖率结果会随目录结构而变化?

预览模式下的 SonarQube 线覆盖规则

为啥 PyTest 覆盖率报告中缺少我项目的大部分 Django 文件?

如何检查控制台中的笑话覆盖率?

Pytest08-pytest工具与插件

pytest文档57-计算单元测试代码覆盖率(pytest-cov)