Можно ли сделать декоратор ignore-this для покрытия? - PullRequest
0 голосов
/ 09 июля 2020

Я построил простой декоратор, который, надеюсь, заставит покрытие игнорировать все, к чему оно применяется. Эмпирически это не имеет никакого эффекта. Единственный известный мне способ отключить покрытие для блока кода - это # pragma: no cover - есть ли способ переместить его в бизнес-лог c?

def deco(fn):
    return fn  # pragma: no cover

@deco
def uncover_me(x):
    if x > 1:
        return 3
    return 5


uncover_me(3)
uncover_me(0)

1 Ответ

0 голосов
/ 12 июля 2020

В вашем файле .coverager c вы можете указать регулярные выражения, которые будут исключать строки (описанные в Расширенное исключение ).

Если регулярное выражение соответствует строке, вводящей предложение кода , то весь пункт исключается. Исключение декоратора приведет к исключению всей функции.

Это должно сработать для вас:

# in .coveragerc
[report]
exclude_lines =
    @deco
    pragma: no cover

Из документов:

Обратите внимание, что при использовании параметра exclude_lines в файле конфигурации вы берете под свой контроль весь список регулярных выражений, поэтому вам нужно повторно указать соответствие по умолчанию «pragma: no cover», если вы все еще хотите, чтобы оно применялось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...