可以从coverage.py报告中排除测试目录吗?
我对Python的单元测试还不太熟悉,特别是coverage.py这个工具。请问在覆盖率报告中包含你实际测试文件的覆盖情况,这样做是否合适呢?
这里有一张我的HTML报告的截图作为例子。
你可以看到报告中包含了tests/test_credit_card
。一开始我想把tests/
这个文件夹从报告中排除,像这样:
coverage html --omit=tests/ -d tests/coverage
我尝试了几种不同的命令,但就是无法把tests/排除在外。最后我放弃了,开始想是不是测试文件本来就应该包含在报告里。
有没有人能帮我解释一下这个问题呢?
6 个回答
56
把这个留在这里,以防有Django开发者需要为他们的项目准备一个.coveragerc文件。
[run]
source = .
omit = ./venv/*,*tests*,*apps.py,*manage.py,*__init__.py,*migrations*,*asgi*,*wsgi*,*admin.py,*urls.py
[report]
omit = ./venv/*,*tests*,*apps.py,*manage.py,*__init__.py,*migrations*,*asgi*,*wsgi*,*admin.py,*urls.py
在你的项目根目录下创建一个名为.coveragerc的文件,把上面的代码粘贴进去,然后运行这个命令:
coverage run manage.py test
另外,如果你想让测试执行得更快,可以运行这个命令。
coverage run manage.py test --keepdb --parallel
这样可以保留测试数据库,并且会并行运行测试。
112
这段代码的意思是:使用一个叫做“coverage”的工具来生成一个HTML格式的报告。这个报告会显示代码的测试覆盖率,也就是有多少代码被测试过了。这里的“--omit="*/test*"”部分是告诉工具在生成报告的时候,忽略掉所有在“test”文件夹里的文件。最后的“-d tests/coverage”是指定报告要保存到“tests/coverage”这个文件夹里。
114
在你的项目根目录下创建一个 .coveragerc
文件,并在里面加入以下内容:
[run]
omit = *tests*