【问题标题】:Pytest + Coverage generates wrong coveragePytest + Coverage 生成错误的覆盖率
【发布时间】:2021-06-03 02:28:02
【问题描述】:

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

    • 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.py里面运行main()函数,覆盖结果竟然是一样的。

我哪里错了?

【问题讨论】:

    标签: python pytest code-coverage


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2014-06-06
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多