一、定制logo和导航栏名称
1、安装allure
2、进入allure-2.13.1\config(allure的安装路径)
3、在allure.yml添加 - custom-logo-plugin
4、进入D:\allure-2.13.1\plugins\custom-logo-plugin\static(allure的安装路径)
5、将自己需要展示的logo图片放到这个目录,
6、编辑styles.css(logo-0.png为报告自定义导航栏图标,自定义导航栏名称)
.side-nav__brand {
background: url('logo-0.png') no-repeat left center !important;
margin-left: 10px;
height: 40px;
background-size: contain !important;
}
.side-nav__brand span{
display: none;
}
.side-nav__brand:after{
content: "阿里巴巴";
margin-left: 20px;
}
注:logo展示样式可自己调试
7、通过修改报告里summary.json修改报告名称:
# _*_ coding: utf-8 _*_
import json,os
path = os.getcwd()
p = os.path.abspath(os.path.dirname(path) + os.path.sep + '.')
dict = {} # 用来存储数据
class JsonAlter():
# 获取json里面数据
def get_json_data(self, name,time):
file=p+"\\Outputs\\report\\"+time+"\\widgets\\summary.json"
# 定义为只读模型,并定义名称为f
with open(file, 'rb') as f:
# 加载json文件中的内容给params
params = json.load(f)
# 修改内容
params['reportName'] = name
# 将修改后的内容保存在dict中
dict = params
# 关闭json读模式
f.close()
# 返回dict字典内容
return dict
# 写入json文件
def write_json_data(self, dict,time):
file = p + "Outputs\\report\\" + time + "\\widgets\\summary.json"
# 定义为写模式,名称定义为r
with open(file, 'w', encoding="utf-8") as r:
# 将dict写入名称为r的文件中
json.dump(dict, r, ensure_ascii=False, indent=4)
# 关闭json写模式
r.close()
二、去掉参数展示
@pytest.mark.parametrize('story,title,description,severity,name,execute', data) ##标题、描述、严重级别、断言图片名称
def test_001(self,story,title,description,severity,name,execute):
allure.dynamic.story(story)
allure.dynamic.title(title)
allure.dynamic.description(description)
allure.dynamic.severity(severity)
使用@pytest.mark.parametrize后测试报告里会展示参数信息,信息重复,隐藏后显示更清晰
方法一:(网上找到方法,验证发现无效,知道原因的小伙伴请留言)
listener.py 文件位置:Lib\site-packages\allure_pytest\listener.py (第三方包所在的LIb目录) 将下图中红色部分test_result.parameters.extend([]) 中参数改成空列表就行了
方法二:修改数据
主要有两个地方:
1、用例标题的数据存在报告/data/behaviors.json
2、用例详情数据存在报告/data/test-cases/ 目录下
思路:将"parameters" 数据置空,则测试报告里不显示
3、封装修改json文件方法
class ChangeReport():
####将json文件里所有"parameters"值都重置为空列表
def reset_parameters(self,json_data):
if isinstance(json_data, dict): # 如果是字典类型
if "parameters" in json_data: # 如果存在"parameters"键
json_data["parameters"] = [] # 重置为一个空列表
for key, value in json_data.items():
self.reset_parameters(value) # 递归处理值
elif isinstance(json_data, list): # 如果是列表类型
for item in json_data:
self.reset_parameters(item) # 递归处理列表中的每个元素
return json_data
###修改报告用例标题-去除标题里的参数####################
def change_title(self,file):
with open(file, 'rb') as f:
# 加载json文件中的内容给params
params = json.load(f)
self.reset_parameters(params)
# 写入JSON文件
with open(file, 'w') as file:
json.dump(params, file)
###修改报告用例详情-去除参数信息####################
def change_content(self,directory):
# 指定目录路径
# directory = rf"../Outputs/report/2023-12-26_15_08/data/test-cases"
# 使用glob模块获取目录下所有JSON文件的完整路径
json_files = [os.path.abspath(file) for file in glob.glob(os.path.join(directory, '*.json'))]
# 遍历所有JSON文件的完整路径
for json_file in json_files:
# 处理每个JSON文件的逻辑
with open(json_file, 'rb') as f:
# 加载json文件中的内容给params
params = json.load(f)
self.reset_parameters(params)
# 写入JSON文件
with open(json_file, 'w') as file:
json.dump(params, file)
4、生成报告后添加后置步骤修改json文件
# -*- coding: UTF-8 -*-
import pytest,os,time
from public.change_report import ChangeName,ChangeReport
time = time.strftime("%Y-%m-%d_%H_%M")
pytest.main()
# pytest.main(['-s','TestCases/LogicaTest.py','--alluredir','Outputs/results','--clean-alluredir'])
# pytest.main(['-s','TestCases','--alluredir','Outputs/results','--clean-alluredir'])
#生成报告
sr='allure generate Outputs/results -o Outputs/report/'+time+' --clean'
os.system(sr)
#修改报告名称
dict=ChangeName().get_json_data('测试报告',time)
ChangeName().write_json_data(dict,time)
##删除报告-用例标题里参数信息
file=rf"./Outputs/report/{time}/data/behaviors.json"
ChangeReport().change_title(file)
##删除报告-用例详情里参数信息
directory = rf"./Outputs/report/{time}/data/test-cases"
ChangeReport().change_content(directory)
5、修改后效果