如何进行覆盖包括未测试的文件?

36 python unit-testing coverage.py python-unittest

我刚开始写一些单元测试我一直在使用Python项目unittestcoverage.我目前只测试一小部分,但我正在努力解决代码覆盖问题

我运行我的测试并使用以下内容获得覆盖

python -m unittest discover -s tests/
coverage run -m unittest discover -s tests/
coverage report -m
Run Code Online (Sandbox Code Playgroud)

我遇到的问题coverage是告诉我有44%的代码覆盖率并且只计算以下文件:

  1. 在单元测试中进行了测试(即,所有未测试的文件都丢失了,而不是在整体覆盖范围内)

  2. 在虚拟环境中的库中以及实际测试的代码覆盖率也是如此.当然不应该在结果中包括实际测试?

此外,它说在这些单元测试中实际测试的文件只测试了前几行(在大多数情况下是import语句)

我如何获得更实际的代码覆盖率,或者它是如何实现的?

Ned*_*der 37

添加--source=.coverage运行线.它会将焦点限制在当前目录中,并将搜索.py根本不运行的文件.

  • 谢谢,这对我有用!`coverage run --source = {dir} -m unittest discover -s tests /`将覆盖{dir}.我可以问:通过子目录(递归)怎么样? (5认同)
  • 好的,但这对我不起作用,我有版本 4.4.1,并且正在 Ubuntu 16.04 上运行,使用以下命令: `coverage run --source=./mc -m unittest discovery -s tests` (其中 `mc`是根包目录)。我必须将所有子目录添加到根 {dir} 才能正常工作: `coverage run --source=./mc,./mc/win -m unittest discovery -s {test-dir}` (2认同)