【问题标题】:How to find which branches are not covered by tests?如何找到哪些分支没有被测试覆盖?
【发布时间】:2015-02-04 16:15:14
【问题描述】:

我正在测量一个小型 Python 应用程序的代码覆盖率。

虽然线路覆盖率是 100%,但分支覆盖率不是。问题是coverage 不会给我任何关于没有被覆盖的分支位置的指示。

coverage run
    --branch
    --omit=/usr/lib/python3/dist-packages/*,tests/*
    -m unittest discover

返回:

Ran 33 tests in 0.079s

OK
Name              Stmts   Miss Branch BrMiss  Cover   Missing
-------------------------------------------------------------
app/__init__          1      0      0      0   100%   
app/file_finder      93      0     40      0   100%   
app/zipper           66      0     46      7    94%   
-------------------------------------------------------------
TOTAL               160      0     86      7    97%   

我希望Missing 列包含对应于七个错过分支的行,但那里什么都没有。

我应该如何找到它们?

【问题讨论】:

    标签: python python-3.x code-coverage coverage.py


    【解决方案1】:

    -m 将仅包括“完整”未命中,而不包括分支未命中。你可以使用命令

    coverage html
    

    创建一组 HTML 页面,包括突出显示所有覆盖范围,包括分支未命中。参见例如HTML 报告的this example,来自the documentation

    【讨论】:

      【解决方案2】:

      如果你有足够的勇气尝试预发布版本,coverage.py 4.0 也会在文本报告中显示缺失的分支。

      【讨论】:

      • coverage.py 4.0 为此目的为我工作;当我在覆盖较旧的系统上时,我的解决方法是python -m coverage xml; less coverage.xml
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      相关资源
      最近更新 更多