2

当我运行 pytest --cov 时,我得到了 ~60% 的覆盖率值。代码推送到github后codecov.io上生成的报告显示100%。我无法理解两者有何不同,我认为正在运行相同的命令。

Codecov.io 显示

Files       •   •   •   Coverage
 __init__.py    2   2   0   0   100.00%
 c_wrapper.py   5   5   0   0   100.00%
 fibonacci.py   13  13  0   0   100.00%
 tests/test_fibonnaci.py    39  39  0   0   100.00%
Folder Totals (4 files) 59  59  0   0   100.00%
Project Totals (4 files)    59  59  0   0   100.00%

但运行

pytest --cov=fibonacci fibonacci/tests

节目

----------- coverage: platform linux, python 3.7.4-final-0 -----------
Name                                Stmts   Miss Branch BrPart  Cover
---------------------------------------------------------------------
fibonacci/__init__.py                   2      2      0      0     0%
fibonacci/c_wrapper.py                  5      5      0      0     0%
fibonacci/fibonacci.py                 13     13      6      0     0%
fibonacci/tests/test_fibonnaci.py      39      0      0      0   100%
---------------------------------------------------------------------
TOTAL                                  59     20      6      0    60%

差异来自哪里,哪个是正确的?

4

2 回答 2

3

正如您在pytest 文档中看到的使用的区别:

python -m pytest [...]

pytest [...]

是“调用 viapython也会将当前目录添加到sys.path.”

这可能是覆盖范围的差异。但是,我相信在 pytest-cov 之前调用了其他插件。

Pytest 有一个提前加载参数-p,它强制插件在任何其他插件之前被调用。

下面的命令可以解决封面问题。

pytest -p pytest_cov --cov

此外,对于测试,您可以尝试运行以下命令来检查哪些行没有被覆盖并比较两者:

pytest --cov-report term-missing --cov
python -m pytest --cov-report term-missing --cov
于 2019-12-11T20:31:24.763 回答
0

似乎(出于我不理解但想这样做的原因)跑步之间的区别

pytest --cov=fibonacci fibonacci/tests

python -m pytest --cov=fibonacci fibonacci/tests

做后者显示全面覆盖

于 2019-10-24T12:05:07.770 回答