覆盖范围和 flake8 的内嵌注释指令

Dro*_*ror 3 python code-coverage

假设我有以下内容__init__py:

# __init__.py
from . import my_foo
Run Code Online (Sandbox Code Playgroud)

就像这样,flake8会抱怨F401。这可以通过以下方法解决:

# __init__.py
from . import my_foo  # NOQA: F401
Run Code Online (Sandbox Code Playgroud)

另一方面,cov插件pytest会抱怨这条线没有测试。这可以通过以下方法解决:

# __init__.py
from . import my_foo  # pragma: no cover
Run Code Online (Sandbox Code Playgroud)

我怎样才能让双方都幸福呢?我可以做类似的事情:

# flake8: noqa
from . import gender  # pragma: no cover
Run Code Online (Sandbox Code Playgroud)

flake8但从的角度来看,这会影响整个文件。

我也尝试过类似的事情:

from . import gender  # pragma: no cover, NOQA: F401
Run Code Online (Sandbox Code Playgroud)

但它并没有按预期工作。

Ned*_*der 5

coverage.py 的注释语法是可配置的。您可以覆盖行匹配的正则表达式:高级排除

例如:

[report]
exclude_lines =
    pragma: no cover
Run Code Online (Sandbox Code Playgroud)

这将匹配任何包含“pragma: no cover”的行,因此此注释现在应该有效:

# NOQA: F401; pragma: no cover
Run Code Online (Sandbox Code Playgroud)

默认正则表达式仅需要“#”和“pragma”之间有空格