自动化测试基础——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.mzph.cn/news/721504.shtml

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

相关文章

Qt绘制动态罗盘

介绍:罗盘指针以30角旋转巡逻,扫描航海范围内的点位,并绘制点云。字段信息在表格中显示,该数据都存储在数据库中。选择不同的范围,显示该范围内的点位。 #include "mainwindow.h" #include "ui_mainwi…

魔行观察-每日品牌监测-书亦烧仙草-开店趋势

今日监测对象:书亦烧仙草,监测时间段:2014年9月至2023年12月,发布时间:2024-03-05 数据获取地址:魔查查https://www.moxingdata.com/品牌基础信息 现有门店人均消费覆盖省份经营模式投资金额837918.431特…

10亿数据如何快速插入MySQL

最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL? 有如下约束 10亿条数据,每条数据 1 Kb 数据内容是非结构化的用户访问日志,需要解析后写入到数据库 数据存放在…

CMIP6数据处理方法与典型案例分析

气候变化对农业、生态系统、社会经济以及人类的生存与发展具有深远影响,是当前全球关注的核心议题之一。IPCC(Intergovernmental Panel on Climate Change,政府间气候变化专门委员会)的第六次评估报告明确;指出&#x…

【笔记】【电子科大 离散数学】 3.谓词逻辑

谓词引入 因为含变量的语句(例如x > 3)不是命题,无法进行逻辑推理。 为了研究简单命题句子内部的逻辑关系,我们需要对简单命题进行分解,利用个体词,谓词和量词来描述它们,并研究个体与总体…

JavaScript实现鼠标移动特效

关键代码&#xff1a; <script>document.onmousemove function (e) {// 加div节点var div document.createElement(div);div.style.width 5px;div.style.height 5px;// 加img节点var img document.createElement(img);// 将Img追加到div里面。div.appendChild(img);…

Python开发工具:pycharm使用注意事项以及设置

上一篇文章写了pycharm的安装以及运行&#xff0c;但是在安装过程中遇到了一些问题&#xff0c;接下来详细解析安装过程中遇到的问题&#xff0c;注意事项以及设置配置依赖等信息 安装遇到的问题&#xff1a; 协议许可证关闭不了&#xff1a;PyCharm安装完成后&#xff0c;打…

数据传输的同步技术包含哪些?如何高效安全传输数据?

在数字化时代&#xff0c;数据传输的同步技术对于确保信息的一致性和通信质量至关重要。本文将探讨数据传输同步技术的种类、如何实现高效安全的数据传输&#xff0c;以及企业在数据迁移中常用的几种方式。最后&#xff0c;我们将重点介绍镭速大数据迁移工具的优势。 数据传输同…

Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘

Python成功解决AttributeError: ‘Series‘ object has no attribute ‘set_value‘ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&am…

简单介绍AudioLM

主要介绍AudioLM&#xff0c;学习资料为知乎文章。这里只介绍核心思想和模块。 AudioLM 基本信息 AudioLM: a Language Modeling Approach to Audio Generation pdf: https://arxiv.org/pdf/2209.03143.pdf 参考资料&#xff1a;https://zhuanlan.zhihu.com/p/637196330 模…

Elasticsearch:向量相似度计算 - 可笑的速度

作者&#xff1a;Chris Hegarty 任何向量数据库的核心都是距离函数&#xff0c;它确定两个向量的接近程度。 这些距离函数在索引和搜索期间执行多次。 当合并段或在图表中导航最近邻居时&#xff0c;大部分执行时间都花在比较向量的相似性上。 对这些距离函数进行微观优化是值…

记录一次bug

Component inside renders non-element root node that cannot be animated. 这可能导致 页面切换过度动画失败&#xff0c;导致页面空白&#xff0c;需要有一个公共根组件 放在一个根元素下面即可

STM32利用标准库编写PA0和PA4中断proteus仿真

首先先看看结果吧&#xff1a;昨天学习的是5--9或10--15引脚的中断&#xff0c;如果选择的是0到4口应该怎么办呢&#xff1f;今天就学习的这个&#xff0c;特此记录一下&#xff1a; 整个工程打包好了&#xff0c;直接下载打开就能仿真了&#xff1a; 链接&#xff1a;https:/…

「Mybatis实战九」:Mybatis的dao层开发使用 - 代理开发方式

一、前言 ​ 本文将进一步探讨在之前“「Mybatis实战八」&#xff1a;传统开发方式下的Mybatis DAO层构建”所奠定的基础之上&#xff0c;如何运用Mybatis的接口代理开发模式来优化持久层的设计与实现&#xff0c;解决上文中的问题。 二、代理开发方式简介 Mybatis提供的基于…

前端部署真的不简单

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~> 原文&#xff1a;前端部署真的不简单 - 掘金 (juejin.cn) 现在大部分的中小型公司部署前端代码都是比较简单的&#xff0c;主要步骤如下: 首先&#xff0c;通过脚手架提供的命令npm run build打包前端代码&…

【模型复现】自制数据集上复现目标检测域自适应 SSDA-YOLO

【模型复现】自制数据集上复现目标检测域自适应 SSDA-YOLO 1. 环境安装2. 数据集制作2.1 数据准备2.2 数据结构 3. 模型训练3.1 数据文件配置3.2 训练超参数配置3.3 模型训练 4. 模型验证4.1 验证超参数配置4.2 模型验证 5. 模型推理5.1 推理超参数配置5.2 模型推理 6. 踩坑记录…

【主题广范|见刊快】2024年可再生能源与智能电网国际学术会议(ICRESG 2024)

【主题广范|见刊快】2024年可再生能源与智能电网国际学术会议(ICRESG 2024) 2024 International Conference Renewable Energy and Smart Grid 本次会议汇聚了来自全球各地的专家学者&#xff0c;共同探讨可再生能源与智能电网领域的最新研究成果、技术进展和未来发展趋势。会…

数据结构.多项式加法

#include<iostream> using namespace std; int a[100][2], b[100][2], sum[100][2]; int n, m; int main() {cin >> n;//输入第一个多项式的项数for (int i 0; i < n; i){cin >> a[i][0] >> a[i][1];//分别输入系数和指数}cin >> m;//输入第…

递归学习资料

思路 例题 package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static void f(String str,int n){if (nstr.length()){return;}f(str,n1);System.out.println(str.charAt(n)"");} }多路递归 递归优化 -剪枝…

建立网络防御时需要重点考虑的10个因素

互联网安全中心&#xff08;CIS&#xff09;建议企业可以从以下10个因素入手&#xff1a;资产管理、数据管理、安全配置、账户和访问控制管理、漏洞管理、日志管理、恶意软件防御、数据恢复、安全培训和事件响应。 1、资产管理 建立网络防御的第一步是制定企业资产和软件资产的…