pythoncoverage.pypython-coverage

How do I interpret Python coverage.py branch coverage results?


I'm using coverage.py to measure the code coverage of my tests. I've enabled branch coverage, but I can't quite make sense of the report.

Without branch coverage, I get 100% coverage:

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

With branch coverage enabled:

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

The source in question can be found here.

21->10 makes sense; the if clause never evaluates to False (jumping back to the beginning of the outer for loop).

However, 53->-48 and 59->-58 have me scratching my head. What do they mean?


Solution

  • Dan's comment is close. First, the negative numbers mean, an exit from a function starting at that line number. So -48 means, exit from the function starting at line 48.

    The issue isn't empty loops: those branches would have happened if the loops ever completed. It looks like perhaps they did not.

    BTW: Coverage.py 4.1b3 has changed some of this behavior: they'd be marked as 53->exit, 59->exit. Also, the branches themselves might be identified differently. Give it a try.