首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从coverage.py中排除文件?

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

Stack Overflow用户
提问于 2012-08-30 23:36:43
回答 3查看 10.9K关注 0票数 10

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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值一起确定要测量的源。

票数 3
EN

Stack Overflow用户

发布于 2021-04-07 22:37:39

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

下面是一些例子:

代码语言:javascript
运行
复制
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

票数 4
EN

Stack Overflow用户

发布于 2021-11-05 13:39:24

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

docs说:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12200528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档