python - Pytest + Coverage 生成错误的覆盖率
问题描述
我有一个看起来像这样的源代码结构
- 源代码
- 主文件
- 测试
- default_case
- test_default.py
- default_case
然后,如果我对测试文件夹进行覆盖
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
,覆盖结果结果是一样的。
我哪里错了?
解决方案
经过一番挖掘,结合Coverage 官方教程和这个 github 线程,问题解决了。
cd /path/to/project_root
poetry run coverage run --omit '*virtualenvs*' -m pytest
poetry run coverage report -m
请注意,我使用诗歌来管理我的依赖关系,因此poetry run
如果您不使用诗歌,则应该删除。
推荐阅读
- r - 如何在 Rscripts 中使用名称设置参数
- excel - 在powershell / excel COM对象中抑制Do Until的输出
- java - ServerBuilder.forPort(port) - java.lang.NoSuchMethodError
- python - 如何在模板中编辑 Django 表单?
- rust - 使用 rust 宏程序调用函数
- memory-management - 是否可以将 1 个进程加载到内存中的 2 个连续分区?
- javascript - java脚本计算器中的括号()?
- c - 从内联汇编跳转到标签到 C
- android - 如何从 intArrayOf 中删除和添加图像?
- mysql - MYSQL:重复密钥更新不起作用?