Pytest +覆盖率显示出非常奇怪的覆盖率统计信息。 他们只计算添加了测试的模块,但由于某些原因未计算其他Python模块。
我有一个简单的Python Microservice,其结构类似于:
README.rst
Dockerfile
manage.py
api_service/
setup.py
requirements.txt
tests/
api_service
包含所有逻辑,而tests
包含单元测试。
API用Python 3.X编写
单元测试-Pytest 3.10.0
我正在运行以下命令以获取代码覆盖率统计信息:
python coverage run pytest -v --junit-xml=junit-report.xml tests/
python coverage xml --fail-under 80
python coverage report
对我来说,这真是奇怪而出乎意料的结果。 例如最终报告中有空的 init .py模块(覆盖率100%),它们会影响最终覆盖率。 此外,它添加了很多仅带有抽象类等的模块。
但是实际上根本没想到的是-它没有计算没有测试的Python模块。太可怕了!
有没有处理这种情况的命令,标志等是正确的方法?
我也尝试过运行类似的东西:
python coverage run --source=service_api -v --junit-xml=junit-report.xml tests/
但是它也不会返回预期的结果。
答案 0 :(得分:0)
CD 进入 prj 目录并运行:
pytest --cov=. tests/ --cov-report xml
为了获得 xml 格式的源文件的代码覆盖率。
先决条件:
pip install pytest pytest-cov