11

我使用nosetestcoverage.py插件。是否有可能从覆盖率报告中排除整个文件或文件夹?我的用例是在我的项目文件夹中有一个外部库,显然我的测试套件没有涵盖。

4

3 回答 3

4

如果要排除代码块,请使用# pragma: no cover注释。

一些例子:

def foo(self, param): # pragma: no cover <--
    """ Exclude an entire function """
    # None of this will be included in coverage

def bar(self, param):
    """ Exclude a branch of code """
    if param:
        # This part is included in code coverage
        do_this()
    else: # pragma: no cover <--
        # Not included in coverage
        other_thing()

更多在文档中。

于 2021-04-07T14:37:39.307 回答
3

是的,他们在docs中有相当广泛的支持。

运行代码时,coverage run 命令将默认测量所有代码,除非它是 Python 标准库的一部分。

您可以使用 --source 命令行开关或 [run] 源配置值指定要测量的源。该值是目录或包名称的列表。如果指定,则仅测量这些目录或包中的源。指定源选项还可以使coverage.py 报告未执行的文件,因为它可以在源树中搜索根本没有测量的文件。只考虑可导入的文件(位于树根的文件,或在具有_init _.py 文件的目录中的文件),并且名称中带有不寻常标点符号的文件将被跳过(假定它们是由文本编写的暂存文件编辑)。

您可以使用 --include 和 --omit 开关(或 [run] include 和 [run] omit 配置值)进一步微调 coverage.py 的注意力。--include 是文件名模式的列表。如果指定,则仅测量与这些模式匹配的文件。--omit 也是文件名模式的列表,指定不测量的文件。如果同时指定了 include 和 omit,则首先将文件集减少为仅与包含模式匹配的文件,然后从集中删除与省略模式匹配的所有文件。

包含和省略文件名模式遵循典型的 shell 语法:* 匹配任意数量的字符和 ? 匹配单个字符。以通配符开头的模式按原样使用,其他模式相对于当前目录进行解释。

源值、包含值和省略值共同确定要测量的源。

于 2015-11-24T21:22:55.947 回答
1

另一种解决方案是将要排除的文件或文件夹放在不是包的目录中(即其中没有__init__文件)。覆盖范围将不会覆盖它。

文档说:

只会考虑可导入的文件(位于树根目录或包含文件的目录中的__init__.py文件)。

于 2021-11-05T13:39:23.647 回答