> 技术文档 > pytest 与 pytest-html 的关系及使用

pytest 与 pytest-html 的关系及使用

pytest-html 是 pytest 的一个插件,专门用于生成 HTML 格式的测试报告。它们之间的关系可以概括为:pytest 是测试框架,而 pytest-html 是扩展其功能的插件。下面详细解释它们的关系和各自的作用:

1. pytest:测试框架

  • 作用pytest 是 Python 中最流行的测试框架之一,用于编写和运行测试用例。它提供了丰富的断言、fixture、参数化等功能,使测试代码更简洁、灵活。
  • 核心功能
    • 发现测试用例(通过命名约定或标记)。
    • 执行测试并收集结果。
    • 提供丰富的插件机制扩展功能。
  • 示例测试用例

def test_addition():

    assert 1 + 1 == 2

2. pytest-html:生成 HTML 报告的插件

  • 作用pytest-html 是 pytest 的官方推荐插件,用于将测试结果以 HTML 格式展示,使报告更直观、美观。
  • 核心功能
    • 生成包含测试结果的 HTML 文件(通过 --html 参数指定路径)。
    • 展示测试通过率、失败详情、执行时间等统计信息。
    • 支持附件(如截图、日志)嵌入报告。
    • 可自定义样式和内容。
  • 使用方式

pytest --html=report.html --self-contained-html

3. 为什么需要 pytest-html

pytest 本身的测试结果默认在控制台输出,适合开发阶段快速查看,但在以下场景中不够用:

  • 需要详细的可视化报告:HTML 报告更直观,适合团队共享或向上级汇报。
  • 需要保存历史结果:HTML 文件可存档,便于追踪测试趋势。
  • 需要集成到 CI/CD:HTML 报告可作为自动化流程的一部分,上传到服务器或发送邮件。

4. 如何安装和使用?

安装

pip install pytest-html

执行测试并生成报告

pytest --html=report.html

报告示例

5. 其他类似插件

除了 pytest-htmlpytest 还有许多其他插件用于扩展报告功能:

  • allure-pytest:生成更强大的交互式报告,支持测试步骤、附件、统计图表等。
  • pytest-cov:统计代码覆盖率并生成报告。
  • pytest-json-report:生成 JSON 格式的报告,便于后续处理。

总结

  • pytest 是基础框架,负责测试的发现、执行和结果收集。
  • pytest-html 是插件,负责将 pytest 的测试结果转换为 HTML 格式的报告。
  • 两者结合使用,既能享受 pytest 的强大测试功能,又能获得美观易用的可视化报告。