自动化测试基础——allure下载安装及配置及pytest + allure-pytest插件生成allure企业级测试报告及企业级定制

news2024/11/18 23:41:35

文章目录

  • 前言
  • 一、allure下载
  • 二、allure安装
  • 三、allure目录介绍
  • 四、allure环境变量配置
  • 五、pytest + allure-pytest插件生成allure企业级测试报告
  • 六、allure企业级报告的log定制
  • 七、allure企业级报告功能内容定制
    • 1.功能左边层级定制
    • 2.功能右边优先级定制
    • 3.功能右边测试用例描述定制
    • 4.功能右边测试用例链接定制
    • 5.功能右边测试用例测试步骤定制
    • 6.功能右边测试用例测试步骤+附件定制
    • 6.功能右边测试用例测试步骤+文本内容定制
  • 八、局域网下查看allure测试报告
    • 1.局域网(内网)
    • 2.局域网(外网)

前言

allure 是一个java测试报告框架。所以要基于JDK环境

  • JDK下载与安装及配置:https://blog.csdn.net/weixin_44904239/article/details/116291544

一、allure下载

  • allure下载地址:https://github.com/allure-framework/allure2/releases

二、allure安装

  • 将下载好的安装包解压到需要存放的路径下(我这边存放在了D盘的根目录下)

    在这里插入图片描述

    在这里插入图片描述

三、allure目录介绍

  • bin:命令文件

  • config:配置文件

  • lib:存放jar包

  • plugins:插件

    在这里插入图片描述

四、allure环境变量配置

  1. 此电脑 → 属性

    在这里插入图片描述

  2. 高级系统设置

    在这里插入图片描述

  3. 环境变量

    在这里插入图片描述

  4. 双击系统变量下的Pash

    在这里插入图片描述

  5. 新建

    在这里插入图片描述

  6. 填写 allure 安装的路径 → 确定(D:\allure-2.21.0\bin)

    在这里插入图片描述

  7. 确定

    在这里插入图片描述

  8. 确定

    在这里插入图片描述

  9. Windows系统及PyCharm中验证

    allure --version
    

    在这里插入图片描述

    在这里插入图片描述

注意:allure环境变量配置完成以后,Windows窗口验证没问题,pycharm验证有问题,则重启pycharm重新验证即可

五、pytest + allure-pytest插件生成allure企业级测试报告

  1. 安装 pytest allure-pytest 插件

    pip install pytest 
    pip install allure-pytest
    
  2. 配置 pytest.ini 全局配置文件

    # --alluredir=./temps:设置allure生成临时的json格式的报告存放的路径
    # --clean-alluredir:清空上一次运行的记录
    
    addopts = -vs --alluredir=./temps --clean-alluredir
    

    在这里插入图片描述

  3. pytest测试框架的主函数入口配置

    参数作用
    generte生成报告
    tempsallure生成临时的json格式的报告存放的路径
    -o生成allure报告的目录
    report生成allure报告存放的目录
    -c,–clean清空
    import os
    
    import pytest
    
    # 运行pytest测试框架的主函数
    if __name__ == '__main__':
        pytest.main()
        # 调用allure生成报告
        os.system("allure generate ./temps -o ./report --clean")
    

    在这里插入图片描述

注意:需要通过pytest主函数执行才会生成allure的html测试报告

  1. 查看allure生成的html测试报告

    在这里插入图片描述
    在这里插入图片描述

  2. 修改allure报告的语言

    在这里插入图片描述

    在这里插入图片描述

六、allure企业级报告的log定制

  1. 前往allure安装目录下的plugins存放插件的目录下复制定制log的插件名称

    在这里插入图片描述

  2. 将复制的插件名称粘贴到allure安装目录下的config目录下的allure.yml文件中

    config目录下的allure.yml文件中配置自定义的logo插件

    - custom-logo-plugin
    

    在这里插入图片描述

    在这里插入图片描述

  3. 重新启动pytest生成allure报告,查看是否启用自定义log插件

    在这里插入图片描述

  4. 将准备好的log图片放到allure安装目录下的plugins\custom-logo-plugin\static定制log的插件路径下

    在这里插入图片描述

  5. 修改allure安装目录下的plugins\custom-logo-plugin\static定制log的插件路径下的styles.css文件

    通过修改这两个参数来调整log图片的大小和位置:margin-left: 10px;height: 90px;

    .side-nav__brand {
      background: url('log.jpg') no-repeat left center !important;
      margin-left: 10px;
      height: 90px;
      background-size: contain !important;
    }
    
    .side-nav__brand-text {
      display: none;
    }
    

    在这里插入图片描述
    在这里插入图片描述

  6. 重新启动pytest生成allure报告,查看是否定制log成功

    在这里插入图片描述

七、allure企业级报告功能内容定制

1.功能左边层级定制

在这里插入图片描述

  • (1)项目名称(史诗):@allure.epic()

  • (2)模块名称(特性):@allure.feature()

  • (3)接口名称(分组):@allure.story()

  • (4)用例标题:有两种方式(两种效果是一样的,方式二更加灵活)

    • 方式一:@allure.title()
    • 方式二:allure.dynamic.title()

    方法一

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.title("用例名称-验证成功登陆")
        def test_login(self):
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.title("用例名称-验证成功注册")
        def test_register(self):
            print("注册")
    
        @allure.story("添加用户")
        @allure.title("用例名称-验证成功添加用户")
        def test_add_user(self):
            print("添加用户")
    

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    方法二

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")
    

    在这里插入图片描述

注意:每次修改内容后要查看预期结果需要重新执行allure生成报告

2.功能右边优先级定制


优先级默认都是:normal

在这里插入图片描述

  • 测试用例严重级别:

    • BLOCKER:致命的(@allure.severity(allure.severity_level.BLOCKER)
    • CRITICAL:严重的(@allure.severity(allure.severity_level.CRITICAL)
    • NORMAL:正常的(@allure.severity(allure.severity_level.NORMAL)
    • MINOR:轻微的(@allure.severity(allure.severity_level.MINOR)
    • TRIVIAL:不重要的(@allure.severity(allure.severity_level.TRIVIAL)
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            print("修改用户")
    

    在这里插入图片描述
    在这里插入图片描述

3.功能右边测试用例描述定制

  • 测试用例的描述定制:有两种方式

    • 方式一:@allure.description()
    • 方式二:allure.dynamic.description()

    方法一:

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.description("这是验证登陆是否成功")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        @allure.description("这是验证注册是否成功")
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        @allure.description("这是验证添加用户是否成功")
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        @allure.description("这是验证删除用户是否成功")
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        @allure.description("这是验证修改用户是否成功")
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            print("修改用户")
    
    

    在这里插入图片描述
    在这里插入图片描述
    方法二:

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            allure.dynamic.description("这是验证注册是否成功")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            allure.dynamic.description("这是验证添加用户是否成功")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            allure.dynamic.description("这是验证删除用户是否成功")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            allure.dynamic.description("这是验证修改用户是否成功")
            print("修改用户")
    

    在这里插入图片描述

    在这里插入图片描述

4.功能右边测试用例链接定制

  • @allure.link():接口访问链接

  • @allure.issue():bug链接

  • @allure.testcase():测试用例链接

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
    

    在这里插入图片描述

    在这里插入图片描述

5.功能右边测试用例测试步骤定制

  • 测试步骤定制:两种方式(常用第二种

    • 方式一:@allure.step()
    • 方式二:with allure.step():

    方法一:

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        @allure.step("测试步骤:输入用户名、输入密码、点击登陆")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
    

    在这里插入图片描述
    在这里插入图片描述

    方法二:

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            with allure.step("第一步:输入用户名"):
                print("输入用户名")
            with allure.step("第二步:输入密码"):
                print("输入密码")
            with allure.step("第三步:点击登陆"):
                print("点击登陆")
            print("登陆")
    

    在这里插入图片描述
    在这里插入图片描述

6.功能右边测试用例测试步骤+附件定制

  • 测试用例步骤+附件(一般用于错误截图(一般用于web自动化测试))

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
            # 测试步骤
            for i in range(1, 6):
                with allure.step("第" + str(i) + "步"):
                    pass
            # 错误截图
            with open("D:\\error.png", mode="rb") as f:
                result = f.read()
                allure.attach(body=result, name="错误截图", attachment_type=allure.attachment_type.PNG)
    

    在这里插入图片描述

    在这里插入图片描述

6.功能右边测试用例测试步骤+文本内容定制

  • 文本内容定制:一般应用于接口自动化

  • 文本内容定制:allure.attach("文本内容", name="文本名称", attachment_type=allure.attachment_type.TEXT)

    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
            # 测试步骤
            for i in range(1, 6):
                with allure.step("第" + str(i) + "步"):
                    pass
            # 错误截图
            with open("D:\\error.png", mode="rb") as f:
                result = f.read()
                allure.attach(body=result, name="错误截图", attachment_type=allure.attachment_type.PNG)
            # 接口自动化:文本
            # 请求四要素
            allure.attach("接口地址:https://www.baidu.com", name="文本1", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口参数:{一般从yaml中获取}", name="文本2", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口请求方式:get", name="文本3", attachment_type=allure.attachment_type.TEXT)
            allure.attach("请求头:{一般从yaml中获取}", name="文本4", attachment_type=allure.attachment_type.TEXT)
            # 响应内容
            allure.attach("响应文本:{一般从yaml中获取}", name="文本5", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口执行结果:成功/失败", name="文本6", attachment_type=allure.attachment_type.TEXT)
    

    在这里插入图片描述

    在这里插入图片描述

八、局域网下查看allure测试报告

1.局域网(内网)


让公司内部局域网下其他人员查看allure测试报告(通过下面方法,将得到的链接地址分析给其他人员即可)

  • 命令:allure open allure测试报告地址

    allure open ./report
    

在这里插入图片描述
在这里插入图片描述

2.局域网(外网)


需要做网络映射,需要运维人员去完成,不属于测试的工作范围

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1488223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【acwing】前缀与差分

前缀和 题目 输入一个长度为 n的整数序列。 接下来再输入 m个询问,每个询问输入一对 l,r。 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n和 m。 第二行包含 n个整数,表示整数数列。 接下来 …

Java基础---lambda表达式

一、为什么要引入lambda表达式 lambda 表达式是一个可传递的代码块 , 可以在以后执行一次或多次 。 在介绍lambda表达式之前,我们看一下,以前,我们对于一个问题的通常写法。 假设你已经了解了如何按指定时间间隔完成工作&#xf…

Window系统部署Splunk Enterprise并结合内网穿透实现远程访问本地服务

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 本文主要介绍如何简单几步,结合cpolar内网穿透工具实现随时随地在任意浏览器,远程访问在本地…

Linux进程间通信4——消息队列

目录 1.原理 2.消息队列的系统调用 2.1 msgget 2.2 msgsnd 2.3 msgrcv 2.4 msgctl 3.消息队列的使用——代码演示 4.结论 1.原理 2.消息队列的系统调用 2.1 msgget 用于创建或者获取一个消息队列。成功返回消息队列ID,失败返回-1。 int msgget(key_t key,…

谷歌seo推广效果怎么判断?

要想判断谷歌SEO推广效果,核心在于观察和分析几个关键指标,一个网站最重要的自然就是流量,没有流量的网站说到底就是一个被雪藏的花架子,没什么意义,所以看流量自然就是最重要的指标,SEO做得好,…

【力扣白嫖日记】626.换座位

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 626.换座位 表:Seat 列名类型idintstudentvarchar id 是该表的主键(唯一值&#xf…

深入 Starknet 去中心化世界,探秘实用开发利器

Starknet 近期开放空投,面向 130 万地址总量发放超 7 亿枚 Token,让 ECMP 早期贡献者、GitHub 开源开发者、Starknet 用户等各个层面的生态参与者都得以深度参与。 盛宴的背后,是 Starknet 正迎来发展的关键机遇。在今年以太坊坎昆升级的背景…

绕过付费,畅享网络:自由浏览付费内容 | 开源日报 No.185

iamadamdev/bypass-paywalls-chrome Stars: 38.8k License: NOASSERTION bypass-paywalls-chrome 是一个用于 Chrome 和 Firefox 的网页浏览器扩展,可帮助绕过特定网站的付费墙。 可以绕过多个指定网站的付费墙支持自动更新(仅限 Firefox 版本&#x…

10.轮廓系数-机器学习模型性能的常用的评估指标

轮廓系数(Silhouette Coefficient)是评估聚类算法效果的常用指标之一。它结合了聚类的凝聚度(Cohesion)和分离度(Separation),能够量化聚类结果的紧密度和分离度。 背景 1.聚类分析的背景 在…

武汉灰京文化:游戏推广的领军者

在当今飞速发展的游戏行业中,游戏推广成为了每个游戏开发商和发行商必然要面对的挑战。如何能够将游戏信息传播给更广泛的受众群体,提升游戏的知名度和用户参与度,成为了每个游戏从业者需要思考的问题。而武汉灰京文化作为游戏推广领域的领军…

指定新加坡|高职老师自费赴新加坡国立大学访学交流

K老师任职于某高职院校,希望通过自费出国访学,达到拓宽国际化视野,为本校的专业发展寻求新契机的目的,并将访学目标国家指定为新加坡。最终我们为其获得新加坡国立大学的邀请函。因交叉性、前沿性的专业特性,K老师的出…

STM32CubeIDE基础学习-软件安装,环境搭建

STM32CubeIDE基础学习-软件介绍及环境搭建步骤 文章目录 STM32CubeIDE基础学习-软件介绍及环境搭建步骤前言第1章 STM32CubeIDE 介绍1.1 软件描述1.2 软件支持的功能及特点 第2章 STM32CubeIDE 软件安装2.1 STM32CubeIDE 软件获取方法2.2 STM32CubeIDE 软件安装步骤2.2.1 错误安…

一些C语言知识

C语言的内置类型&#xff1a; char short int long float double C99中引入了bool类型&#xff0c;用来表示真假的变量类型&#xff0c;包含true&#xff0c;false。 这个代码的执行结果是什么&#xff1f;好好想想哦&#xff0c;坑挺多的。 #include <stdio.h>int mai…

《精益DevOps》:填补IT服务交付的认知差距,实现高效可靠的客户期望满足

写在前面 在当今的商业环境中&#xff0c;IT服务交付已经成为企业成功的关键因素之一。然而&#xff0c;实现高效、可靠、安全且符合客户期望的IT服务交付却是一项艰巨的任务。这要求服务提供商不仅具备先进的技术能力&#xff0c;还需要拥有出色的组织协作、流程管理和态势感…

(2024,随机交叉注意力,冻结预训练模型的 K 和 V)StochCA:一种利用交叉注意力开发预训练模型的新方法

StochCA: A Novel Approach for Exploiting Pretrained Models with Cross-Attention 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 问题陈述 3.1.1 迁移学习 …

LeetCode206题:反转链表(python3)

采用递归 class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:cur headpre Nonewhile cur:temp cur.next # 保存下一轮循环的节点cur.next pre # 将当前节点 cur 的指针指向上一个节点 prepre curcur tempreturn pre

Network LSA 结构简述

Network LSA主要用于描述一个区域内的网络拓扑结构&#xff0c;包括网络中的路由器和连接到这些路由器的网络。它记录了每个路由器的邻居关系、连接状态以及连接的度量值&#xff08;如带宽、延迟等&#xff09;&#xff0c;以便计算最短路径和构建路由表。display ospf lsdb n…

08. Nginx进阶-Nginx动静分离

简介 什么是动静分离&#xff1f; 通过中间件将动态请求和静态请求进行分离。分离资源&#xff0c;减少不必要的请求消耗&#xff0c;减少请求延时。 动静分离的好处 动静分离以后&#xff0c;即使动态服务不可用&#xff0c;静态资源仍不受影响。 动静分离示意图 动静分离…

抉择IT工单管理系统:SaaS云部署VS本地部署,亿发解读优势与成本

在选择IT运维工单系统时&#xff0c;企业经常需要考虑部署在公有云&#xff08;SaaS&#xff09;还是本地部署。实际上&#xff0c;两种部署方法都有各自的优势&#xff0c;企业应该综合考虑自身的资金成本、安全性需求和便捷性等因素。那么SaaS云部署和本地部署有什么区别呢&a…

ST32/GD32——UART串口通信

芯片选型 Ciga Device — GD32F470系列 串口通信 串口通信指的是通过串行通信接口进行数据传输的通信方式&#xff0c;通常用于短距离、低速率的数据传输。 串口通信可以使用不同的串行通信协议和接口&#xff0c;常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I…