处理allure报告的一些方法,优化allure报告显示

This commit is contained in:
floraachy
2023-05-22 09:35:16 +08:00
parent 9c353adaa1
commit 14e3dbd194
+147
View File
@@ -0,0 +1,147 @@
# -*- coding: utf-8 -*-
# @Time : 2023/5/17 8:58
# @Author : chenyinhua
# @File : allure_handle.py
# @Software: PyCharm
# @Desc:
import json
import allure
from config.global_vars import AllureAttachmentType
import os
def allure_title(title: str) -> None:
"""allure中动态生成用例标题"""
# allure.dynamic动态属性
allure.dynamic.title(title)
def allure_step(step_title: str, content: str = None, source=None) -> None:
"""
allure.step()添加测试用例步骤
:param step_title: 步骤及附件名称
:param content: 附件内容
:param source: 文件路径
"""
if source:
with allure.step(step_title):
"""
语法:allure.attach.file(source, name, attachment_type, extension)
参数解释:
source:文件路径,相当于传一个文件;
name:附件名称;
attachment_type:附件类型,是allure.attachment_type其中的一种;
extension:附件的扩展名(文件后缀);
"""
# 获取上传附件的尾缀,判断对应的 attachment_type 枚举值
file_suffix = source.split('.')[-1]
_attachment_type = getattr(AllureAttachmentType, file_suffix.upper(), None)
allure.attach.file(source=source, name=os.path.basename(source),
attachment_type=_attachment_type if _attachment_type is None else _attachment_type.value,
extension=file_suffix)
else:
with allure.step(step_title):
"""
语法:allure.attach(body, name, attachment_type, extension)
参数解释:
body:要写入附件的内容;
name:附件名称;
attachment_type:附件类型,是allure.attachment_type其中的一种;
extension:附件的扩展名(文件后缀);
-------------------------------------------------------------------
json.dumps(content, ensure_ascii=False, indent=4)
ensure_ascii表示的意思是是否要转为ASCII码,如果打开(默认打开True),那么转为json后中文会变成ASCII编码,如果关闭后中文还是中文,不会变为ASCII编码。
indent表示间隔的长度
"""
allure.attach(body=json.dumps(content, ensure_ascii=False, indent=4), name=step_title,
attachment_type=allure.attachment_type.TEXT)
class AllureReportBeautiful:
"""
美化allure测试报告
"""
def __init__(self, allure_html_path=None, allure_results_path=None):
"""
@param allure_results_path: allure保存测试结果集目录
@param allure_html_path: allure生成的html报告的目录
"""
self.allure_html_path = allure_html_path
self.allure_results_path = allure_results_path
# 设置报告窗口的标题
def set_windows_title(self, new_title):
"""
设置打开的 Allure 报告的浏览器窗口标题文案
@param new_title: 需要更改的标题文案 【 原文案为:Allure Report 】
@return:
"""
report_title_filepath = os.path.join(self.allure_html_path, "index.html")
# 定义为只读模型,并定义名称为: f
with open(report_title_filepath, 'r+', encoding="utf-8") as f:
# 读取当前文件的所有内容
all_the_lines = f.readlines()
f.seek(0)
f.truncate()
# 循环遍历每一行的内容,将 "Allure Report" 全部替换为 → new_title(新文案)
for line in all_the_lines:
f.write(line.replace("Allure Report", new_title))
# 关闭文件
f.close()
def set_report_name(self, new_name):
"""
修改Allure报告Overview的标题文案
@param new_name: 需要更改的标题文案 【 原文案为:ALLURE REPORT 】
@return:
"""
title_filepath = os.path.join(self.allure_html_path, "widgets", "summary.json")
# 读取summary.json中的json数据,并改写reportName
with open(title_filepath, 'rb') as f:
# 加载json文件中的内容给params
params = json.load(f)
# 修改内容
params['reportName'] = new_name
# 将修改后的内容保存在dict中
new_params = params
# 往summary.json中,覆盖写入新的json数据
with open(title_filepath, 'w', encoding="utf-8") as f:
json.dump(new_params, f, ensure_ascii=False, indent=4)
def set_report_env(self, env_info):
"""
在allure-results报告的根目录下生成一个写入了环境信息的文件:environment.properties(注意:不能放置中文,否则会出现乱码)
@param env_info: 需要写入的环境信息
@return:
"""
with open(os.path.join(self.allure_results_path, "environment.properties"), 'w', encoding="utf-8") as f:
for k, v in env_info.items():
f.write('{}={}\n'.format(k, v))
def allure_logo_change(allure_path, logo_path):
"""
修改allure的logo
步骤:
1. 进入‘allure-x.x.x\config 目录,打开 allure.yml’ 文件,在最下面增加一行 - custom-logo-plugin ' 特别要注意层级关系。
2. 复制logo到‘allure-x.x.x\plugins\custom-logo-plugin\static 文件夹
3. 修改‘allure-x.x.x\plugins\custom-logo-plugin\static\styles.css 文件 来配置logo,参考如下:
.side-nav__brand {
background: url('logo.svg') no-repeat left center !important;
margin-left: 10px;
height: 65px;
width: 150px;
background-size: contain !important;
}
.side-nav__brand span{
display: none;
}
@param allure_path: logo绝对路径
@param logo_path: logo绝对路径
"""
# TODO 后续支持通过代码实现修改
pass