如何在使用coverage.py时排除South迁移的覆盖率报告

31 投票
6 回答
8314 浏览
提问于 2025-04-16 08:51

我在使用 coverage.py 来检查我的 Django 应用的测试覆盖率。不过,由于我使用 South 来进行数据库迁移,所有这些迁移文件的覆盖率都显示为 0%,这让整体的覆盖率看起来很糟糕。

我已经尝试在 runreport 中使用 --omit=*migrations*,但是没有效果。

我还尝试了 3.4 版本和截至 2010 年 12 月 20 日的 Bitbucket 最新版本,结果还是一样。

有没有什么办法可以让 coverage.py 忽略这些迁移文件夹呢?

6 个回答

2

最新版本的 django-jenkins 增加了一个新选项 COVERAGE_WITH_MIGRATIONS,这个选项可以让你在计算代码覆盖率时排除迁移文件。现在这个版本还没有在PyPI上发布,所以你需要通过pip或easy_install来安装,并指定这个项目的Git地址作为来源。

27

你可以通过匹配迁移目录来排除那些文件。你试过给参数加上引号吗?根据你的操作系统和命令行工具,可能会提前处理那些星号。你可以这样试试:

--omit='*migrations*'

另外,你也可以把这个开关放到一个 .coveragerc 文件里:

[run]
omit = *migrations*
29

解决方案是:

[run]
omit = ../*migrations*

撰写回答