Как использовать cover.py для отображения номеров строк определений функций? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу измерить функциональный охват 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()

И это отчет, сгенерированный из командной строки: Report generated test.py from the command line

Сюда входят только тела функций. Можно ли как-то включить в отчет о покрытии только определения функций?

...