如何找到测试未涵盖哪些分支?

时间:2015-02-04 16:15:14

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

我正在测量一个小型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列包含与七个错过的分支相对应的行,但那里什么都没有。

我该如何找到它们?

2 个答案:

答案 0 :(得分:5)

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

coverage html

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

答案 1 :(得分:4)

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