coverage.py:排除文件

Posted

技术标签:

【中文标题】coverage.py:排除文件【英文标题】:coverage.py: exclude files 【发布时间】:2010-12-06 06:37:50 【问题描述】:

如何从coverage.py 报告中排除整个文件?

根据文档,您可以通过匹配行来排除代码。我想排除整个文件,以便报告不包括第 3 方库。我错过了什么吗?能做到吗?

【问题讨论】:

如果没有其他人给你答案,Ned 可能很快就会来解决问题——他是这里的常客 :) 不知道自己这么有预见性是不是好事! :) 【参考方案1】:

您可以使用 --omit 标志省略模块。它采用逗号分隔的路径前缀列表。比如:

coverage run my_program.py
coverage report --omit=path/to/3rdparty

【讨论】:

在 API 中,您提供了您要报告的模块列表,因此那里没有太多方便的控制。 @NedBatchelder 这对我不起作用,请参阅 pastebin.com/YFg3fbmW 。我有coverage.py, version 3.5.2. http://nedbatchelder.com/code/coverage。你知道我做错了什么吗? @moose 我遇到了同样的问题。通过使用通配符解决了它。像这样:coverage report --omit="../../django-tastypie/*"。注意末尾的* 如果我想省略多个文件怎么办,我可以在setup.cfg这样的地方配置它 @VaibhavVishal 使用逗号--omit=dir1/*,dir2/*【参考方案2】:

除了其他答案中的选项外,您还可以通过setup.cfg配置忽略的文件:

[coverage:run]
omit =
    some/directory/*
    debug_*.py

详情请参阅documentation。

【讨论】:

【参考方案3】:

使用覆盖 API 省略一些文件对我有用。 嗯,这和 Ned 建议的一样。

这是我的做法:

cov = coverage.coverage(omit='/usr/lib/python2.6/site-packages/*')

【讨论】:

【参考方案4】:

创建一个新文件.coveragerc 并添加以下行

[run]
branch = True
omit =
    directory/*

【讨论】:

以上是关于coverage.py:排除文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Coverage.py 会忽略没有覆盖的文件?

Coverage.py 警告:未收集数据。 (未收集数据)

Coverage.py 不会发现子目录中没有 init.py 文件的测试

如果 py.test 从另一个目录执行它,coverage.py 不会覆盖脚本

如何在目录上运行coverage.py?

从 coverage.py 运行测试与从测试运行器运行覆盖