自动化测试基础——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.rhkb.cn/news/269375.html

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

相关文章

用HTML5的<canvas>元素实现刮刮乐游戏

用HTML5的&#xff1c;canvas&#xff1e;元素实现刮刮乐游戏 用HTML5的<canvas>元素实现刮刮乐&#xff0c;要求&#xff1a;将上面的“图层”的图像可用鼠标刮去&#xff0c;露出下面的“图层”的图像。 示例从简单到复杂。 简单示例 准备两张图像&#xff0c;我这…

java 版本企业招标投标管理系统源码+功能描述+tbms+及时准确+全程电子化

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

使用GitOps自动化推动AI/ML工作流程

作为一名深耕自动化和人工智能领域的开发人员&#xff0c;我们逐渐认识到尖端工具和方法之间的显着协同作用&#xff0c;这些协同作用突破了可能性的界限。在这次探索中&#xff0c;我们想分享一个概念&#xff0c;它不仅彻底改变了我们的软件开发和基础设施管理方法&#xff0…

cmd模式下启动mysql

1.打开cmd输入services.msc&#xff0c;找到MYSQL&#xff0c;右击属性&#xff0c;找到可执行文件路径&#xff0c;加载到环境变量。 2.打开cmd&#xff0c;启动MYSQL&#xff1a;输入net start mysql; 3.登陆MYSQL&#xff0c;需要管理权限&#xff1b; 输入&#xff1a;my…

java实现图片转pdf,并通过流的方式进行下载(前后端分离)

首先需要导入相关依赖&#xff0c;由于具体依赖本人也不是记得很清楚了&#xff0c;所以简短的说一下。 iText&#xff1a;PDF 操作库&#xff0c;用于创建和操作 PDF 文件。可通过 Maven 或 Gradle 引入 iText 依赖。 MultipartFile&#xff1a;Spring 框架中处理文件上传的类…

【深蓝学院】移动机器人运动规划--第7章 集群机器人运动规划--笔记

文章目录 0. Contents1. Multi-Agent Path Finding (MAPF)1.1 HCA*1.2 Single-Agent A*1.3 ID1.4 M*1.5 Conflict-Based Search(CBS)1.6 ECBS1.6.1 heuristics1.6.2 Focal Search 2. Velocity Obstacle (VO&#xff0c;速度障碍物)2.1 VO2.2. RVO2.3 ORCA 3. Flocking model&am…

金三银四,程序员如何备战面试季

金三银四&#xff0c;程序员如何备战面试季 一个人简介二前言三面试技巧分享3.1 自我介绍 四技术问题回答4.1 团队协作经验展示 五职业规划建议5.1 短期目标5.2 中长期目标 六后记 一个人简介 &#x1f3d8;️&#x1f3d8;️个人主页&#xff1a;以山河作礼。 &#x1f396;️…

Golang 程序启动原理详解

一.编译 go源代码首先要通过 go build 编译为可执行文件,然后去机器上直接执行的&#xff0c;在 linux 平台上为 ELF 格式的可执行文件&#xff0c;linux 能直接执行这个文件,而编译阶段会经过编译器、汇编器、链接器三个过程最终生成可执行文件 编译器&#xff1a;*.go 源码通…

23.基于springboot + vue实现的前后端分离-在线旅游网站系统(项目 + 论文PPT)

项目介绍 本旅游网站系统采用的数据库是MYSQL &#xff0c;使用 JSP 技术开发&#xff0c;在设计过程中&#xff0c;充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 技术选型 后端: SpringBoot Mybatis 数据库 : MyS…

视频生成模型Sora的全面解析:从AI绘画、ViT到ViViT、DiT、VDT、NaViT、VideoPoet

前言 真没想到&#xff0c;距离视频生成上一轮的集中爆发(详见《Sora之前的视频生成发展史&#xff1a;从Gen2、Emu Video到PixelDance、SVD、Pika 1.0》)才过去三个月&#xff0c;没想OpenAI一出手&#xff0c;该领域又直接变天了 自打2.16日OpenAI发布sora以来(其开发团队包…

第十七天-反爬与反反爬-验证码识别

目录 反爬虫介绍 基于身份识别反爬和解决思路 Headers反爬-使用User-agent Headers反爬-使用coookie字段 Headers反爬-使用Referer字段 基于参数反爬 验证码反爬 1.验证码介绍 2.验证码分类&#xff1a; 3.验证码作用 4.处理方案 5.图片识别引擎:ocr 6.使用打码平…

AWTK 开源串口屏开发(11) - 天气预报

# AWTK 开源串口屏开发 - 天气预报 天气预报是一个很常用的功能&#xff0c;在很多设备上都有这个功能。实现天气预报的功能&#xff0c;不能说很难但是也绝不简单&#xff0c;首先需要从网上获取数据&#xff0c;再解析数据&#xff0c;最后更新到界面上。 在 AWTK 串口屏中…

如何在jupyter notebook 中下载第三方库

在anconda 中找到&#xff1a; Anaconda Prompt 进入页面后的样式&#xff1a; 在黑色框中输入&#xff1a; 下载第三方库的命令 第三方库&#xff1a; 三种输入方式 标准保证正确 pip instsall 包名 -i 镜像源地址 pip install pip 是 Python 包管理工具&#xff0c;…

牛客练习赛122

D:圆 正着求删除的最小代价不好做&#xff0c;采用逆向思维&#xff0c;求选择一些不相交的线段使得构成一个圆的代价尽量大&#xff0c;最后答案就是所有线段权值之和减去最大代价。 那么如何求这个最大代价呢&#xff1f;显然区间DP 老套路&#xff1a;破环成链&#xff0…

Java实现手机库存管理

一、实验任务 编写一个程序&#xff0c;模拟库存管理系统。该系统主要包括系统首页、商品入库、商品显示和删除商品功能。每个功能的具体要求如下&#xff1a; 1.系统的首页&#xff1a;用于显示系统所有的操作&#xff0c;并且可以选择使用某一个功能。 2.商品入库功能&…

Java 数据结构篇-深入了解排序算法(动态图 + 实现七种基本排序算法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 实现冒泡排序 2.0 实现选择排序 2.1 选择排序的改良升级 3.0 实现堆排序 4.0 实现插入排序 5.0 实现希尔排序 6.0 实现归并排序 6.1 递归实现归并排序 6.2 使用…

用FPGA CORDIC IP核实现信号的相位检测,计算相位角

用FPGA CORDIC IP核实现信号的相位检测 1.matlab仿真 波形仿真代码&#xff1a; 代码功能&#xff1a;生成一个点频信号s&#xff0c;求出s的实部和虚部&#xff1b;并且结算相位角atan2。画出图形&#xff0c;并且将Q和I数据写入文件中。 %代码功能&#xff1a;生成一个点…

双链表——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰又回来了&#xff0c;到了好久没有更新的数据结构与算法专栏&#xff0c;最近确实发现自己有很多不足&#xff0c;需要学习的内容也有很多&#xff0c;所以之后更新文章可能不会像之前那种一天一篇或者一天两篇啦&…

红帆OA 多处 SQL注入漏洞复现

0x01 产品简介 红帆iOffice.net从最早满足医院行政办公需求(传统OA),到目前融合了卫生主管部门的管理规范和众多行业特色应用,是目前唯一定位于解决医院综合业务管理的软件,是最符合医院行业特点的医院综合业务管理平台,是成功案例最多的医院综合业务管理软件。 0x02 漏…

网络安全: Kali Linux 使用 docker-compose 部署 openvas

目录 一、实验 1.环境 2.Kali Linux 安装docker与docker-compose 3.Kali Linux 使用docker-compose方式部署 openvas 4. KaliLinux 使用openvas 二、问题 1. 信息安全漏洞库 2.信息安全漏洞共享平台 3.Windows 更新指南与查询 4.CVE 查询 5.docker-compose 如何修改o…