Pytest入门系列之pytest的常见三方插件
Pytest入门系列之pytest的常见三方插件
pytest
提供了大量插件,可以增强测试能力,比如:
✅ 并行执行
✅ 生成测试报告
✅ 测试覆盖率统计
✅ Mock
数据
✅ 数据库测试
✅ 自动失败重试
✅ API
测试
pytest-xdist:并行执行,提高测试速度
📌 pytest-xdist
可以并行运行多个测试,提升执行效率。适用于:
✅大规模测试套件
✅API、UI
自动化测试
✅CI/CD
提速
🔹 安装
1 |
|
🔹 用法
1 |
|
🔹 实战案例:加速 API 测试
1 |
|
📌 并行执行
1 |
|
📌 单线程:3s,4 线程并行:1s 🚀
pytest-html:生成可视化 HTML 测试报告
📌 pytest-html
生成详细的 HTML
报告,适用于:
✅CI/CD 持续集成
✅测试数据可视化
✅团队测试报告共享
🔹 安装
1 |
|
🔹 生成 HTML 报告
1 |
|
🔹 实战案例
1 |
|
📌 打开 report.html,查看可视化报告
pytest-cov:代码覆盖率分析
📌 pytest-cov
用于 统计测试覆盖率,找出未测试的代码。适用于:
✅单元测试
✅重构代码,找出未覆盖部分
✅CI/CD 质量检查
🔹 安装
1 |
|
🔹 运行测试 + 生成覆盖率报告
1 |
|
🔹 代码示例
1 |
|
1 |
|
📌 运行 pytest --cov=my_project
1 |
|
📌 发现 multiply()
没有测试!
pytest-mock:模拟 HTTP 请求,数据库,函数
📌 pytest-mock
用于 Mock
依赖的函数/对象,避免真实请求,适用于:
✅模拟 API
返回数据
✅模拟数据库连接
✅Mock
类方法
🔹 安装
1 |
|
🔹 实战案例:Mock HTTP
请求
1 |
|
📌 requests.get
不会真的请求 API
,而是返回 Mock
数据
pytest-django:Django 项目专用
📌 pytest-django
优化 Django
测试,提供数据库回滚、ORM
测试支持。
🔹 安装
1 |
|
🔹 配置
在 pytest.ini
里添加:
1 |
|
🔹 实战案例:测试 Django ORM
1 |
|
📌 数据库测试自动回滚,不影响数据。
pytest-rerunfailures:失败自动重试
📌 pytest-rerunfailures
让失败的测试自动重试,适用于:
✅不稳定的 API / UI
测试
✅CI/CD
避免因偶然失败导致构建失败
🔹 安装
1 |
|
🔹 用法
1 |
|
🔹 代码示例
1 |
|
📌 如果失败,会自动重试 3 次
pytest-faker:生成随机数据
📌 pytest-faker
自动生成测试数据(如姓名、邮箱、地址),适用于:
✅用户注册测试
✅模拟表单提交
✅随机化数据
🔹 安装
1 |
|
🔹 代码示例
1 |
|
📌 运行后,每次生成不同的名字和邮箱
pytest-timeout:防止死循环
📌 pytest-timeout 限制测试运行时间,避免死循环,适用于:
✅API / UI 超时检测
✅避免慢测试阻塞 CI/CD
🔹 安装
1 |
|
🔹 代码示例
1 |
|
📌 运行
1 |
|
总结
插件 | 适用场景 | 命令示例 |
---|---|---|
pytest-xdist |
并行执行测试 | pytest -n 4 |
pytest-html |
生成 HTML 报告 | pytest --html=report.html |
pytest-cov |
测试覆盖率 | pytest --cov=my_project |
pytest-mock |
Mock 测试 | mocker.patch() |
pytest-django |
Django ORM 测试 | @pytest.mark.django_db |
pytest-rerunfailures |
测试失败重试 | pytest --reruns 3 |
pytest-faker |
生成假数据 | faker.email() |
pytest-timeout |
测试超时 | pytest --timeout=5 |
以上只是常见的插件,pytest拥有非常丰富的插件,大家可以在评论区说一下你经常用那个呢?