Как узнать, какие ветки не покрыты тестами?

Я измеряю покрытие кода небольшого приложения Python.

Несмотря на то, что покрытие линии составляет 100%, покрытие филиалов — нет. Проблема в том, что coverage не дает мне никаких указаний о местоположении незакрытых ветвей.

coverage run
    --branch
    --omit=/usr/lib/python3/dist-packages/*,tests/*
    -m unittest discover

возвращает:

Ran 33 tests in 0.079s

OK
Name              Stmts   Miss Branch BrMiss  Cover   Missing
-------------------------------------------------------------
app/__init__          1      0      0      0   100%   
app/file_finder      93      0     40      0   100%   
app/zipper           66      0     46      7    94%   
-------------------------------------------------------------
TOTAL               160      0     86      7    97%   

Я ожидал, что столбец Missing будет содержать строки, соответствующие семи пропущенным ветвям, но там ничего нет.

Как мне их найти?


person Arseni Mourzenko    schedule 04.02.2015    source источник


Ответы (2)


-m будет включать только «полные» промахи, а не промахи ветвей. Вы можете использовать команду

coverage html

для создания набора HTML-страниц, включающих подсветку всего охвата, включая пропуски ветвей. См., например. этот пример отчета в формате HTML с документация.

person jonrsharpe    schedule 04.02.2015

Если вы достаточно смелы, чтобы попробовать предварительную версию, cover.py 4.0 также покажет недостающие ветки в текстовом отчете.

person Ned Batchelder    schedule 04.02.2015
comment
Покрытие.py 4.0 работает для меня для этой цели; когда я нахожусь в системе со старым покрытием, мой обходной путь python -m coverage xml; less coverage.xml - person mkj; 30.06.2015