找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1012

积分

0

好友

141

主题
发表于 昨天 18:46 | 查看: 3| 回复: 0

Allure生成的HTML测试报告默认样式统一,有时我们需要根据项目需求对其进行个性化定制,例如修改浏览器窗口标题、报告概述(Overview)的名称以及添加项目专属的环境信息。下图展示了一种定制化后的效果示例:

定制化Allure报告效果

无论你使用的是接口自动化还是UI自动化,也无论采用何种编程语言,以下方法都是通用的。提升报告的专业度和辨识度,是自动化测试实践中值得关注的一环。

一、修改Allure报告的浏览器窗口标题

Allure HTML报告的窗口标题信息保存在其生成目录下的 index.html 文件中。

index.html文件位置

我们可以在HTML报告生成后,通过一个Python函数来修改这个标题。以下 set_windows_title 函数封装了此功能,只需在主要的执行脚本(如 run.py)中调用即可。

import os

def set_windows_title(allure_html_path, new_title):
    """
    通过修改allure-html目录下的index.html文件,设置打开的Allure报告的浏览器窗口标题
    @param allure_html_path: allure生成的html测试报告根目录
    @param new_title: 需要更改的标题文案 【默认文案为:Allure Report】
    """
    report_title_filepath = os.path.join(allure_html_path, "index.html")

    # 以读写模式打开文件
    with open(report_title_filepath, 'r+', encoding="utf-8") as f:
        # 读取当前文件的所有内容
        all_the_lines = f.readlines()
        f.seek(0)  # 将文件指针移回文件开头
        f.truncate()  # 清空文件内容

        # 循环遍历每一行,将 “Allure Report” 替换为新的标题
        for line in all_the_lines:
            f.write(line.replace("Allure Report", new_title))

二、修改Overview区域的标题文案

报告Overview区域的大标题(默认为“ALLURE REPORT”)则保存在 widgets/summary.json 文件中。

summary.json文件位置

同样,我们编写一个函数在报告生成后修改此文件中的 reportName 字段。

import json
import os

def set_report_name(allure_html_path, new_name):
    """
    通过修改widgets/summary.json文件,更改Allure报告Overview的标题
    @param allure_html_path: allure生成的html测试报告根目录
    @param new_name: 需要更改的标题文案 【默认文案为:ALLURE REPORT】
    """
    title_filepath = os.path.join(allure_html_path, "widgets", "summary.json")

    # 读取并加载json数据
    with open(title_filepath, 'r', encoding='utf-8') as f:
        params = json.load(f)

    # 修改reportName字段
    params['reportName'] = new_name

    # 将修改后的数据写回文件
    with open(title_filepath, 'w', encoding="utf-8") as f:
        json.dump(params, f, ensure_ascii=False, indent=4)

三、自定义环境配置信息

为报告添加环境信息(如项目名、测试人员、版本号等)能让报告更具可读性。主要有两种实现路径。

方法一:修改 allure-results 结果集(不支持中文)

此方法是在生成HTML报告前,向 allure-results 目录中添加一个 environment.properties 文件。但该文件默认不支持中文字符,直接写入会导致乱码。

解决方案:将中文字符转换为Unicode编码后再写入。

# 示例:将中文转换为unicode
encoded_str = "测试报告".encode("unicode_escape").decode()

操作步骤

  1. allure-results 目录下创建 environment.properties 文件。
  2. key=value 格式写入配置信息。
    # environment.properties 示例
    project=test_demo
    tester=flora
    python_version=3.9

以下函数封装了此过程,应在测试执行完毕、结果集生成后调用。

import os

def set_report_env_on_results(allure_results_path, env_info: dict):
    """
    在allure-results目录下生成environment.properties文件并写入环境信息。
    注意:value中不能直接包含中文,否则会出现乱码。
    @param allure_results_path: allure-results测试结果集根目录
    @param env_info: 需要写入的环境信息字典,如 {'project': 'demo'}
    """
    file_path = os.path.join(allure_results_path, "environment.properties")
    with open(file_path, 'w', encoding="utf-8") as f:
        for key, value in env_info.items():
            f.write(f'{key}={value}\n')
方法二:直接修改 allure-html 报告(支持中文)

此方法绕过了 properties 文件的限制,直接修改最终HTML报告中的 widgets/environment.json 文件,完美支持中文显示。

environment.json 文件所需的格式如下:

[
  {"values": ["项目自动化测试报告"], "name": "report_title"},
  {"values": ["v1.0.0"], "name": "版本"}
]

environment.json文件内容

对应的函数实现如下,在HTML报告生成后调用:

import json
import os

def set_report_env_on_html(allure_html_path, env_info: dict):
    """
    直接修改allure-html报告中的environment.json文件以添加环境信息,支持中文。
    数据格式为: [{"values":["value1"],"name":"key1"}, {"values":["value2"],"name":"key2"}]
    @param allure_html_path: allure生成的html测试报告根目录
    @param env_info: 环境信息字典,如 {'项目名称': '电商平台', '测试环境': 'STG'}
    """
    env_list = []
    for key, value in env_info.items():
        env_list.append({
            "name": key,
            "values": [value]
        })

    env_file_path = os.path.join(allure_html_path, "widgets", "environment.json")
    with open(env_file_path, 'w', encoding="utf-8") as f:
        json.dump(env_list, f, ensure_ascii=False, indent=4)

通过组合运用以上方法,你可以轻松打造出符合团队品牌和项目需求的专属Allure测试报告,这在进行持续集成和结果展示时非常有用。结合良好的Python脚本管理,这些定制化步骤可以无缝集成到你的CI/CD流程中。




上一篇:短信转发器核心功能解析:多端同步、自动化处理与安全实践
下一篇:WordPress媒体管理实战:Elementor视频与好评图上传及批量重命名技巧
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 08:37 , Processed in 0.105859 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表