从覆盖范围中排除函数

JPG*_*JPG 22 python coverage.py test-coverage

我正在使用coverage.py来获取代码的测试覆盖率。

假设我在两个不同的模块中有两个同名的函数

# foo/foo.py

def get_something():
    # fetch something
    # 10 line of branch code
    return "something foo/foo.py"


# bar/foo.py

def get_something():
    # fetch something
    # 20 line of branch code
    return "something bar/foo.py"
Run Code Online (Sandbox Code Playgroud)

如何bar.foo.get_something(...)“完全”排除该功能?

JPG*_*JPG 32

我们可以pragma在函数定义级别使用注释,告诉覆盖率完全排除该函数。

# bar/foo.py

def get_something():  # pragma: no cover
    # fetch something
    # 20 line of branch code
    return "something bar/foo.py"
Run Code Online (Sandbox Code Playgroud)

笔记

如果我们的coveragepy配置文件中有一个exclude_lines设置,请确保pragma: no cover在该设置中,因为它会覆盖默认值。