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

文章目录

  • 前言
  • 一、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 osimport 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.hqwc.cn/news/512190.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某品零食交易平台设计与实现|基于springboot+ Mysql+Java的某品交易平台设计与实现(源码+数据库+文档+PPT)

目录 基于springboot MysqlJava的某品交易平台设计与实现 摘 要 系统详细设计 数据库设计 论文参考 源码获取 文末获取源码联系 基于springboot MysqlJava的某品交易平台设计与实现 摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的…

PyTorch-RNN

首先介绍一下什么是rnn,rnn特别擅长处理序列类型的数据,因为他是一个循环的结构 一个序列的数据依次进入网络A,网络A循环的往后传递。 这就是RNN的基本结构类型。而最早的RNN模型,序列依次进入网络中,之前进入序列的数…

2024全网最全Excel函数与公式应用

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 引言 Excel是一款广泛应用于商业、教育和个人…

内存冷热标记 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 现代计算机系统通常存在多级的存储设备,针对海量的 wordload 的优化的一种思路是将热点内存页优化先放到快速存储层级,这就需要对内存页进…

【vue/组件封装】封装一个带条件筛选的搜索框组件(多组条件思路、可多选)详细流程

引入:实现一个带有筛选功能的搜索框,封装成组件; 搜索框长这样子: 点击右侧筛选图标后弹出层,长这样子: 实际应用中有多组筛选条件,这里为了举栗子就展示一组; 预览:…

ES核心概念(45-48)(56-62)(101-103)

ES集群 ES集群(Cluster)包含多个节点(服务器),整体提供服务 核心概念 索引Index:类似于mysql中的表 映射Mapping:数据的结构信息 文档:相当于表中的一条记录 分片: 将数据分成多片…

010-原型链

原型链 1、概念2、原理3、new 操作符原理4、应用 1、概念 原型链:javascript的继承机制,是指获取JavaScript对象的属性会顺着其_proto_的指向寻找,直至找到Object.prototype上。 2、原理 💡 Tips:构造函数 Fn&#…

Day12-【Java SE进阶】JDK8新特性:Lambda表达式、方法引用、常见算法、正则表达式、异常

一、JDK8新特性 1.Lambda表达式 Lambda表达式是JDK 8开始新增的一种语法形式;作用:用于简化名内部类的代码写法。 注意:Lambda表达式并不是说能简化全部匿名内部类的写法,只能简化函数式接口的匿名内部类。 有且仅有一个抽象方法的接口。注意:将来我们见到的大部…

电商直播大屏是什么?想搞这个怎么做?

随着电商行业的快速发展,直播带货已成为当下最热门的市场营销方式之一。为了更好地掌握直播数据,为企业决策提供有力支持,电商直播数据大屏应运而生。 一、电商直播数据大屏概述 电商直播数据大屏是一种集成了多种数据源的大屏幕可视化展示…

C if...else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。 语法 C 语言中 if…else 语句的语法: if(boolean_expression) {/* 如果布尔表达式为真将执行的语句 */ } else {/* 如果布尔表达式为假将执行的语句 */ }如果布尔表…

主流抠图算法trimap-based/free

GitHub - JizhiziLi/matting-survey: Deep Image Matting: A Comprehensive SurveyDeep Image Matting: A Comprehensive Survey. Contribute to JizhiziLi/matting-survey development by creating an account on GitHub.https://github.com/JizhiziLi/matting-survey数据集介…

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

目录 C语言文件操作 如何打开文件以及打开文件方式 读写文件 关闭文件 Linux系统下的文件操作 open 宏标志位 write,read,close,lseek接口 什么是当前路径? linux下一切皆文件 文件描述符 文件描述符排序 C语言文件操…