首页 > 解决方案 > Pytest + Coverage 生成错误的覆盖率

问题描述

我有一个看起来像这样的源代码结构

然后,如果我对测试文件夹进行覆盖

coverage run --source test -m py.test

它给了我

$ poetry run coverage report
Name                           Stmts   Miss  Cover
--------------------------------------------------
test/default/test_default.py      35      1    97%
--------------------------------------------------
TOTAL                             35      1    97%

如果我针对源 ( src) 文件夹运行它

$ poetry run coverage report
Name          Stmts   Miss  Cover
---------------------------------
src/main.py     105    105     0%
---------------------------------
TOTAL           105    105     0%

我没有得到任何报道。

在我的测试中,我main.py作为子进程运行。

然后我切换到main()里面运行函数main.py,覆盖结果结果是一样的。

我哪里错了?

标签: pythonpytestcode-coverage

解决方案


经过一番挖掘,结合Coverage 官方教程这个 github 线程,问题解决了。

cd /path/to/project_root
poetry run coverage run --omit '*virtualenvs*' -m pytest
poetry run coverage report -m

请注意,我使用诗歌来管理我的依赖关系,因此poetry run如果您不使用诗歌,则应该删除。


推荐阅读