28-pytest-生成HTML报告

本文介绍了如何利用pytest-html插件生成HTML测试报告,并展示了如何通过修改conftest.py文件添加描述和时间列,以及删除链接列,使报告更易读和定制化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

  • 本篇来学习使用pytest-html插件生成HTML报告

安装包

pip install pytest-html

使用示例

  • –html=report.html : css 文件和html报告是分开的
# -*- coding: utf-8 -*-
# @Time    : 2022/3/21
# @Author  : 大海

import os


def test_add():
    a = 1 + 2
    assert a == 3


if __name__ == '__main__':
    # --html=报告名.html   css和html 是分开的
    os.system('pytest -s test_52.py --html=report.html')
  • –self-contained-html : 合并css 到html报告中
# -*- coding: utf-8 -*-
# @Time    : 2022/3/21
# @Author  : 大海

import os


def test_add():
    a = 1 + 2
    assert a == 3


if __name__ == '__main__':
    # --self-contained-html  css样式合并到html中
    os.system('pytest -s test_52.py --html=report.html --self-contained-html')
  • 查看HTML报告
    在这里插入图片描述

修改HTML报告

  • 添加描述(Description)列,添加可排序时间(Time)列,并删除链接(Link)列
  • 新建conftest.py文件(文件名固定,不要改),代码如下
# -*- coding: utf-8 -*-
# @Time    : 2022/3/21
# @Author  : 大海

from datetime import datetime
from py.xml import html
import pytest

@pytest.mark.optionalhook
def pytest_html_results_table_header(cells):
    cells.insert(2, html.th('Description'))
    cells.insert(-1, html.th('Time', class_='sortable time', col='time'))
    cells.pop()

@pytest.mark.optionalhook
def pytest_html_results_table_row(report, cells):
    cells.insert(2, html.td(report.description))
    cells.insert(-1, html.td(datetime.utcnow(), class_='col-time'))
    cells.pop()

@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    outcome = yield
    report = outcome.get_result()
    report.description = str(item.function.__doc__)
  • 测试方法文件 test_53.py
# -*- coding: utf-8 -*-
# @Time    : 2022/3/21
# @Author  : 大海

import os
import time


def test_add():
    """验证1+2等于3"""
    a = 1 + 2
    time.sleep(2)
    assert a == 3


if __name__ == '__main__':
    os.system('pytest -s test_53.py --html=./report/report.html --self-contained-html')
  • 查看HTML报告
    在这里插入图片描述
### 配置 Allure 命令行工具并结合 Pytest 生成测试报告 #### 环境配置 为了确保 Allure 命令行工具能够被系统识别,需要将其安装路径添加到系统的环境变量中。以下是具体的配置方法: #### Windows 系统下的配置 - 导航到 Allure 的安装目录,确保可以执行 `allure.bat` 批处理文件[^5]。 - 修改环境变量: - 打开“系统属性”对话框。 - 转到“高级系统设置”,点击“环境变量”按钮。 - 在“系统变量”部分,找到并选择 `Path` 变量,然后点击“编辑”。 - 将 Allure 的 `bin` 目录路径(例如:`C:\allure\bin`)添加到 `Path` 变量中。 - 验证配置是否成功: - 打开命令提示符(CMD),输入以下命令检查 Allure 版本信息: ```bash allure --version ``` - 如果返回了正确的版本号,则说明环境变量配置成功[^5]。 #### Linux 系统下的配置 - 安装 Allure: 下载并解压 Allure 安装包到指定目录(如 `/data/allure`)。以下是具体步骤: ```bash $ wget https://registry.npmjs.org/allure-commandline/-/allure-commandline-2.13.0.tgz $ tar -zxvf allure-commandline-2.13.0.tgz $ rm -f allure-commandline-2.13.0.tgz $ mv package /data/allure $ chmod -R 777 /data/allure ``` - 配置软链接: 创建一个从 `/usr/bin/allure` 指向 Allure 可执行文件的软链接,以便在任何地方都可以直接调用 `allure` 命令: ```bash $ ln -s /data/allure/bin/allure /usr/bin/allure ``` - 验证配置是否成功: 使用以下命令验证 Allure 是否已正确配置: ```bash allure --version ``` 如果返回了正确的版本号,则说明配置成功[^2]。 #### Pytest 和 Allure 的集成 为了使用 Pytest 和 Allure 生成测试报告,需要完成以下步骤: 1. **安装 Allure 插件**: 在 PyCharm 控制台执行命令以安装 `allure-pytest` 插件: ```bash pip install allure-pytest ``` 或者通过 PyCharm 的插件管理功能搜索并安装 `allure-pytest` 插件[^5]。 2. **编写测试用例**: 使用 Pytest 编写测试用例,并通过装饰器或命令行参数启用 Allure 报告生成功能。例如: ```python import pytest import allure @allure.title("测试用例标题") def test_example(): assert True ``` 3. **运行测试并生成报告**: 使用以下命令运行测试并生成 Allure 报告所需的 JSON 文件: ```bash pytest --alluredir=./allure-results ``` 该命令会在当前目录下创建一个名为 `allure-results` 的文件夹,其中包含测试结果的 JSON 数据。 4. **生成 HTML 报告**: 使用以下命令将 JSON 数据转换为 HTML 格式的测试报告: ```bash allure generate ./allure-results -o ./allure-report --clean ``` 该命令会生成一个名为 `allure-report` 的文件夹,其中包含可浏览的 HTML 报告[^5]。 5. **查看报告**: 使用以下命令启动本地服务器以查看生成的测试报告: ```bash allure open ./allure-report ``` 或者直接打开 `allure-report/index.html` 文件在浏览器中查看报告--- ### 注意事项 - 确保 Allure 的安装路径没有特殊字符或空格,这可能会导致命令解析失败。 - 如果仍然无法找到 Allure 命令,请检查路径是否正确以及是否有权限问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习de测试小白

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值