我使用的是nosetest的coverage.py插件。是否可以从覆盖率报告中排除整个文件或文件夹?我的用例是在我的项目文件夹中有一个外部库,这显然不在我的测试套件中。
发布于 2015-11-25 05:22:56
是的,他们在the docs中对此有相当广泛的支持。
运行代码时,coverage run命令将默认测量所有代码,除非它是Python标准库的一部分。
您可以使用--source命令行开关或run source配置值指定要测量的源。该值是目录或包名称的列表。如果指定,则仅测量这些目录或包中的源代码。指定source选项还可以让coverage.py报告未执行的文件,因为它可以在源树中搜索根本没有测量的文件。只考虑可导入的文件(位于树的根目录或包含_init_.py文件的目录中的文件),并且将跳过名称中具有异常标点符号的文件(假定它们是由文本编辑器编写的临时文件)。
您可以使用--include和--omit开关进一步调整coverage.py的关注度(或者运行include和run omit配置值)。--include是文件名模式的列表。如果指定,则仅测量与这些模式匹配的文件。--omit也是文件名模式的列表,指定不测量的文件。如果同时指定了include和omit,则首先将文件集缩减为仅与include模式匹配的文件,然后从集中删除与omit模式匹配的所有文件。
include和omit文件名模式遵循典型的shell语法:*匹配任意数量的字符,而?匹配单个字符。以通配符开头的模式按原样使用,其他模式相对于当前目录进行解释。
source、include和omit值一起确定要测量的源。
发布于 2021-04-07 22:37:39
如果要排除代码块,请使用# 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。
发布于 2021-11-05 13:39:24
另一种解决方案是将您想要排除的文件或文件夹放在不是软件包的目录中(即其中没有__init__文件)。那么覆盖范围就不会涵盖它了。
docs说:
只考虑可导入的文件(位于树根或包含
__init__.py文件的目录中的文件)。
https://stackoverflow.com/questions/12200528
复制相似问题