Pytest + Coverage 生成错误的覆盖范围

时间:2021-06-03 02:28:02

标签: python pytest code-coverage

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

  • 源代码
    • main.py
  • 测试
    • default_case
      • test_default.py

然后,如果我针对测试文件夹运行覆盖率

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 函数,结果覆盖结果是相同的。

我哪里错了?

1 个答案:

答案 0 :(得分:-1)

稍微挖掘一下,结合Coverage official tutorial和this github thread,问题解决了。

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

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