如何解释Python coverage.py分支覆盖结果?

时间:2016-05-18 15:31:11

标签: python coverage.py python-coverage

我使用coverage.py来衡量测试的代码覆盖率。我已启用分支机构覆盖,但我无法理解报告。

没有分支覆盖,我获得100%的覆盖率:

Name                           Stmts   Miss  Cover   Missing
------------------------------------------------------------
mylib/queries.py                  44      0   100%

启用分支覆盖:

Name                           Stmts   Miss Branch BrPart  Cover   Missing
--------------------------------------------------------------------------
mylib/queries.py                  44      1     20      3    94%   55, 21->10, 53->-48, 59->-58

可以找到相关来源here

21->10有道理; if子句永远不会计算为False(跳回到外部for循环的开头)。

然而,53->-4859->-58让我摸不着头脑。他们是什么意思?

1 个答案:

答案 0 :(得分:11)

丹的评论很接近。首先,负数表示从该行号开始的函数退出。所以-48表示退出从第48行开始的函数。

问题不是空循环:如果循环完成,那些分支就会发生。看起来他们可能没有。

顺便说一句:Coverage.py 4.1b3改变了这种行为:它们被标记为53->exit, 59->exit。此外,分支本身可能会有不同的识别。试一试。