覆盖范围:编译指示:没有多行语句的分支

时间:2019-01-09 14:01:17

标签: python-3.x code-coverage coverage.py

对于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的错误还是预期的行为? 有没有一种方法可以处理此类多行语句,而忽略coverage中缺少的分支?还是我只需要接受我的承保范围摘要中缺少的分支?

1 个答案:

答案 0 :(得分:1)

我意识到这并不是您所要的,但是我建议您将行重构的时间不要太长。我想如果将其更改为以下代码,该代码将更具可读性和可维护性:

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()

这为您提供了给这些表达式起助记名称的机会。

在coverage.py问题本身上:您可以使编译指示工作如下:

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