Rob*_*ong 2 python coverage.py codecov
当我运行 pytest --cov 时,我得到的覆盖率值为 ~60%。代码推送到github后在codecov.io上生成的报告显示为100%。我无法理解两者有何不同,我认为正在运行相同的命令。
\n\nCodecov.io 显示
\n\nFiles \xe2\x80\xa2 \xe2\x80\xa2 \xe2\x80\xa2 Coverage\n __init__.py 2 2 0 0 100.00%\n c_wrapper.py 5 5 0 0 100.00%\n fibonacci.py 13 13 0 0 100.00%\n tests/test_fibonnaci.py 39 39 0 0 100.00%\nFolder Totals (4 files) 59 59 0 0 100.00%\nProject Totals (4 files) 59 59 0 0 100.00%\nRun Code Online (Sandbox Code Playgroud)\n\n但运行
\n\npytest --cov=fibonacci fibonacci/tests\nRun Code Online (Sandbox Code Playgroud)\n\n节目
\n\n----------- coverage: platform linux, python 3.7.4-final-0 -----------\nName Stmts Miss Branch BrPart Cover\n---------------------------------------------------------------------\nfibonacci/__init__.py 2 2 0 0 0%\nfibonacci/c_wrapper.py 5 5 0 0 0%\nfibonacci/fibonacci.py 13 13 6 0 0%\nfibonacci/tests/test_fibonnaci.py 39 0 0 0 100%\n---------------------------------------------------------------------\nTOTAL 59 20 6 0 60%\n\nRun Code Online (Sandbox Code Playgroud)\n\n差异从何而来,哪个是正确的?
\npytest 正如您在文档中看到的使用差异:
python -m pytest [...]
Run Code Online (Sandbox Code Playgroud)
和
pytest [...]
Run Code Online (Sandbox Code Playgroud)
是“调用viapython也会将当前目录添加到sys.path.”
这可能是覆盖范围的差异。但是,我相信其他插件在 pytest-cov 之前被调用。
Pytest 有一个早期加载参数-p,强制该插件在任何其他插件之前被调用。
下面的命令可以解决封面问题。
pytest -p pytest_cov --cov
Run Code Online (Sandbox Code Playgroud)
另外,对于测试,您可以尝试运行以下命令来检查哪些行未被覆盖并比较两者:
pytest --cov-report term-missing --cov
python -m pytest --cov-report term-missing --cov
Run Code Online (Sandbox Code Playgroud)