allure报告定制

本文档介绍了如何定制Allure测试报告的logo和导航栏名称,并提供了详细步骤,包括修改`allure.yml`配置文件,放置自定义logo,调整`styles.css`以显示自定义内容。此外,还展示了如何通过Python脚本修改报告名称和删除测试用例的参数展示,以获得更清晰的报告。文章最后提到了两种尝试但未生效的隐藏参数方法。
摘要由CSDN通过智能技术生成

一、定制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、修改后效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值