Покрытие: прагма: нет ветки с многострочным - PullRequest
0 голосов
/ 09 января 2019

Для пакета python coverage пропущенный else может быть проигнорирован для получающегося покрытия с помощью # pragma: no branch.

Кажется, что это не работает, если разбить длинный оператор if на несколько строк, например:

if this_is_a_verylong_boolean_expression == True and another_long_expression \
    and here_another_expression:  # pragma: no branch
    do_something()

Это ошибка coverage или предполагаемое поведение? Есть ли способ обработать такого рода многострочные операторы и игнорировать отсутствующую ветвь в покрытии? Или я просто должен принять пропущенные ветки в моей сводке покрытия?

1 Ответ

0 голосов
/ 10 января 2019

Я понимаю, что это не совсем то, что вы просили, но я бы порекомендовал вам сделать рефакторинг этой строки не такой длинной. Я предполагаю, что код будет намного более читабельным и обслуживаемым, если вы измените его на:

some_condition = this_is_a_verylong_boolean_expression
another_test = another_long_expression
last_check = here_another_expression
if some_condition and another_test and last_check:     # pragma: no branch
    do_something()

Это дает вам возможность дать этим выражениям мнемонические имена.

По вопросу о cover.py: вы можете заставить прагму работать так:

if (this_is_a_verylong_boolean_expression == True and another_long_expression   # pragma: no branch
    and here_another_expression):
    do_something()
...