我刚开始为使用unittest
和coverage
的python项目编写一些单元测试。我目前只测试一小部分,但我正在努力解决代码覆盖问题
我运行测试并使用以下
获取覆盖率python -m unittest discover -s tests/
coverage run -m unittest discover -s tests/
coverage report -m
我遇到的问题是coverage
告诉我有44%的代码覆盖率并且只计算以下文件:
在单元测试中进行了测试(即,所有未测试的文件都缺失而不在整体覆盖范围内)
在虚拟环境中的库中以及实际测试的代码覆盖率。当然不应该在结果中包括实际测试吗?
此外,它表示在这些单元测试中实际测试的文件只测试了前几行(在大多数情况下是导入语句)
如何获得更实际的代码覆盖率,或者它是如何实现的呢?
答案 0 :(得分:35)
将--source=.
添加到coverage
投放行。它会将焦点限制在当前目录中,并将搜索根本没有运行的.py
个文件。
答案 1 :(得分:1)
如果你使用nose
代替testrunner,它的coverage插件提供
--cover-inclusive Include all python files under working directory in
coverage report. Useful for discovering holes in test
coverage if not all files are imported by the test
suite. [NOSE_COVER_INCLUSIVE]
--cover-tests Include test modules in coverage report
[NOSE_COVER_TESTS]