首页 > 解决方案 > 覆盖范围:编译指示:没有带有多行语句的分支

问题描述

对于 pythoncoverage包,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还是预期的行为?有没有办法处理这些多行语句并忽略覆盖范围中缺少的分支?还是我只需要接受我的报道摘要中缺少的分支?

标签: python-3.xcode-coveragecoverage.py

解决方案


我意识到这并不是您所要求的,但我建议您将该行重构为不要那么长。我猜如果您将代码更改为:

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

推荐阅读