Я хочу измерить функциональный охват python программ. Отчет о номерах строк функции def lines. Можно ли это сделать с помощью файла Неда Батчелдера Coverage.py? Существует покрытие ветви, которое показывает номера строк операторов ветвления.
Используется Coverage.py версии 5.1.
В документации есть этот FAQ:
В: Почему тела функций (или классов) отображаются как выполненные, а строки def - нет?
Это происходит потому, что cover.py запускается после определения функций. Строки определения выполняются без измерения покрытия, затем запускается cover.py, затем вызывается функция. Это означает, что тело измеряется, но определение самой функции - это не так.
Чтобы исправить это, запустите range.py раньше. Если вы используете командную строку для запуска вашей программы с cover.py, то вся ваша программа будет отслеживаться. Если вы используете API, перед импортом модулей, определяющих ваши функции, вам нужно вызвать покрытие.start ().
Я попытался использовать строки def, не включенные, в обратном порядке для моя собственная цель.
import coverage
cov = coverage.coverage()
srcfnDict = {"key1":["a"], "key2":["a", "b", "c"], "key3":["a", "b"]}
def display(srcfnDict):
for src, fns in srcfnDict.items():
for i in fns:
print(src, " ", i)
def add():
a = 5 + 10
return a
cov.start()
display(srcfnDict)
add()
cov.stop()
cov.save()
И это отчет, сгенерированный из командной строки:
Сюда входят только тела функций. Можно ли как-то включить в отчет о покрытии только определения функций?