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

无论你使用的是接口自动化还是UI自动化,也无论采用何种编程语言,以下方法都是通用的。提升报告的专业度和辨识度,是自动化测试实践中值得关注的一环。
一、修改Allure报告的浏览器窗口标题
Allure 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 文件中。

同样,我们编写一个函数在报告生成后修改此文件中的 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()
操作步骤:
- 在
allure-results 目录下创建 environment.properties 文件。
- 按
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": "版本"}
]

对应的函数实现如下,在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流程中。