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

Dav*_*Eyk 8 python coverage.py python-coverage

我正在coverage.py测量我的测试的代码覆盖率.我启用了分支覆盖,但我无法理解报告.

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

Name                           Stmts   Miss  Cover   Missing
------------------------------------------------------------
mylib/queries.py                  44      0   100%
Run Code Online (Sandbox Code Playgroud)

启用分支覆盖:

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

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

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

然而,53->-4859->-58有我抓我的头.他们的意思是什么?

Ned*_*der 12

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

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

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