如何从coverage.py中排除文件?

时间:2012-08-30 15:36:43

标签: python unit-testing code-coverage nose coverage.py

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

2 个答案:

答案 0 :(得分:2)

如果要排除代码块,请使用 # 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()

docs 中的更多内容。

答案 1 :(得分:1)

是的,他们在the docs中得到了相当广泛的支持。

  

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

     

您可以使用--source命令行指定要测量的源   switch,或[run]源配置值。值是一个列表   目录或包名称。如果指定,只在内部来源   将测量这些目录或包。指定源   选项还允许coverage.py报告未执行的文件,因为   它可以在源树中搜索尚未测量的文件   所有。只有可导入的文件(树的根目录或文件中的文件)   将考虑带有__init__.py文件的目录和文件   将跳过他们名字中不寻常的标点符号(他们是   假设是由文本编辑器编写的临时文件。)

     

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

     

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

     

源,包含和省略值都共同确定   将被测量的来源。