1 需求
2 接口
3 示例
1. unittest + HTMLTestRunner(经典组合)
- 特点:
unittest
是 Python 标准库,内置测试框架,支持测试用例组织、断言和执行。HTMLTestRunner
是第三方库,可将unittest
的测试结果生成为美观的 HTML 报告,包含用例统计、通过率、失败详情等。
- 使用场景:适合中小型项目,需要简单直观的报告展示。
2. pytest + pytest-html(灵活高效)
- 特点:
pytest
是更现代的测试框架,语法简洁(无需继承类,用函数定义测试用例),支持参数化、 fixtures 等高级特性。pytest-html
可生成详细的 HTML 报告,包含用例耗时、日志输出、失败堆栈跟踪等,支持自定义报告样式。
- 使用场景:适合复杂项目,需要高扩展性和灵活的测试组织方式。
3. nose2(增强版 unittest)
- 特点:
- 作为
unittest
的扩展,兼容unittest
用例,同时支持更便捷的测试发现(自动搜索测试文件)和插件机制。 - 可通过插件(如
nose2-html-reporting
)生成 HTML 报告,统计用例覆盖率和执行结果。
- 作为
- 使用场景:适合习惯
unittest
语法,希望简化测试配置的项目。
4. allure-pytest(可视化报告)
- 特点:
- 结合
pytest
使用,生成交互式、美观的报告,支持用例分级(故事、特性、场景)、附件(截图、日志)嵌入、趋势图表等。 - 报告支持多维度筛选(如失败用例、跳过用例),适合团队协作和演示。
- 结合
- 使用场景:对报告可视化要求高,需要向非技术人员展示测试结果的项目。
5. testinfra + pytest(基础设施测试)
- 特点:
- 用于服务器、容器等基础设施的测试(如配置、服务状态),基于
pytest
框架。 - 可结合
pytest-html
或allure-pytest
生成针对性的测试报告,统计环境检查用例的执行情况。
- 用于服务器、容器等基础设施的测试(如配置、服务状态),基于
- 使用场景:DevOps 或基础设施自动化测试。
如何选择?
- 简单项目:选
unittest + HTMLTestRunner
,开箱即用。 - 灵活扩展:选
pytest + pytest-html
或allure-pytest
,功能丰富。 - 可视化需求:优先
allure-pytest
,报告效果最佳。 - 兼容旧项目:用
nose2
,平滑过渡unittest
用例。