Как мне интерпретировать результаты покрытия ветки Python cover.py?

Я использую 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->-48 а также 59->-58 заставь меня почесать голову. Что они имеют в виду?

1 ответ

Решение

Комментарий Дэна близок. Во-первых, отрицательные числа означают выход из функции, начинающейся с этого номера строки. Таким образом, -48 означает выход из функции, начиная со строки 48.

Проблема не в пустых циклах: эти ветви произошли бы, если бы циклы когда-либо заканчивались. Похоже, что они не сделали.

Кстати: Coverage.py 4.1b3 изменил некоторые из этих действий: они будут помечены как 53->exit, 59->exit, Кроме того, сами ветви могут быть определены по-разному. Попробуйте.

Другие вопросы по тегам