14

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

有问题的来源可以在这里找到。

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

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

4

1 回答 1

17

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

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

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

于 2016-05-19T01:01:58.607 回答