我使用nosetest
的coverage.py
插件。是否有可能从覆盖率报告中排除整个文件或文件夹?我的用例是在我的项目文件夹中有一个外部库,显然我的测试套件没有涵盖。
3 回答
如果要排除代码块,请使用# 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中有相当广泛的支持。
运行代码时,coverage run 命令将默认测量所有代码,除非它是 Python 标准库的一部分。
您可以使用 --source 命令行开关或 [run] 源配置值指定要测量的源。该值是目录或包名称的列表。如果指定,则仅测量这些目录或包中的源。指定源选项还可以使coverage.py 报告未执行的文件,因为它可以在源树中搜索根本没有测量的文件。只考虑可导入的文件(位于树根的文件,或在具有_init _.py 文件的目录中的文件),并且名称中带有不寻常标点符号的文件将被跳过(假定它们是由文本编写的暂存文件编辑)。
您可以使用 --include 和 --omit 开关(或 [run] include 和 [run] omit 配置值)进一步微调 coverage.py 的注意力。--include 是文件名模式的列表。如果指定,则仅测量与这些模式匹配的文件。--omit 也是文件名模式的列表,指定不测量的文件。如果同时指定了 include 和 omit,则首先将文件集减少为仅与包含模式匹配的文件,然后从集中删除与省略模式匹配的所有文件。
包含和省略文件名模式遵循典型的 shell 语法:* 匹配任意数量的字符和 ? 匹配单个字符。以通配符开头的模式按原样使用,其他模式相对于当前目录进行解释。
源值、包含值和省略值共同确定要测量的源。
另一种解决方案是将要排除的文件或文件夹放在不是包的目录中(即其中没有__init__
文件)。覆盖范围将不会覆盖它。
文档说:
只会考虑可导入的文件(位于树根目录或包含文件的目录中的
__init__.py
文件)。