如何无需编写单元测试为Python手动测试生成pytest代码覆盖率报告
实现Python应用手动测试的代码覆盖率报告(类似Jacoco agent)
Python生态里的coverage.py工具可以实现类似Jacoco的功能,无需编写测试用例,只需追踪手动测试过程中应用的代码执行情况,步骤如下:
1. 安装coverage.py
首先安装覆盖率工具:
pip install coverage
2. 启动应用并开启覆盖率追踪
根据你的应用类型,选择对应的启动方式,确保coverage全程追踪代码执行:
情况1:直接运行的Python脚本/简单服务
如果你的应用是通过脚本直接启动(比如python app.py),用以下命令启动:
coverage run --source=. your_app.py
--source=.指定追踪当前目录下的所有代码,你可以替换成具体的包路径(比如--source=my_package)- 启动后,正常进行手动测试操作,完成后停止应用(比如Ctrl+C)
情况2:WSGI框架应用(Flask/Django等)
Flask示例:
coverage run --source=. -m flask run
Django示例:
coverage run --source=. manage.py runserver
同样,启动后进行手动测试,结束后停止服务器。
情况3:多进程服务(如Gunicorn多worker)
多进程场景下,默认coverage只会追踪主进程,需要开启并行模式来合并各进程的覆盖率数据:
- 启动服务时添加
--parallel-mode:
coverage run --parallel-mode --source=. -m gunicorn app:app --workers=2
- 停止服务后,合并所有进程的覆盖率数据:
coverage combine
3. 生成覆盖率报告
文本报告(快速查看)
执行以下命令生成简洁的文本报告:
coverage report
报告会显示每个文件的覆盖率百分比、执行行数、缺失行数等。
HTML可视化报告(推荐)
生成交互式的HTML报告,方便查看具体哪些代码未被执行:
coverage html
执行后会生成htmlcov目录,打开其中的index.html即可在浏览器中查看详细的覆盖率情况,包括高亮显示未执行的代码行。
4. 自定义配置(可选)
如果需要排除某些文件(如虚拟环境、测试文件),可以在项目根目录创建.coveragerc配置文件:
[run] source = . omit = */venv/* */tests/* */__pycache__/* */migrations/* [report] show_missing = true # 显示未执行的代码行号 skip_covered = false # 不跳过已完全覆盖的文件
后续执行coverage命令时会自动读取该配置。
内容的提问来源于stack exchange,提问作者sapna kumari
相关产品推荐
相关产品推荐

