提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
Allure2的用途
Allure2是一个用于生成测试报告的框架,广泛应用于自动化测试和手动测试中。它支持多种测试框架,如JUnit、TestNG、MSTest等,通过生动的图表和详细的日志,使得非技术人员也能轻松地理解测试结果。许多团队选用Allure2,因为它不仅提高了可读性,还提升了整个测试过程的透明度。
为什么要添加失败截图、用例日志、HTML块和视频?
这些附加数据能解决许多问题。以下是一些原因:
- 快速定位问题:失败截图可以帮助开发者立即看到问题发生时的状态,从而快速定位错误。
- 详尽的上下文信息:通过用例日志,可以了解测试步骤的详细信息,帮助分析问题的根本原因。
- 灵活性和自定义:HTML块允许开发者在报告中嵌入重要信息或文档,使得报告更具交互性。
- 视频记录:通过视频回放可以清晰了解整个测试过程,进一步追溯问题。
如何在Allure2中添加这些功能?
下面我们将详细介绍如何在Allure2报告中添加失败截图、用例日志、HTML块和视频。我们将使用Java驱动的JUnit测试和TestNG作为示例,但步骤对于其他语言和框架也是类似的。
示例1:添加失败截图
在Java的JUnit框架中,你可以使用以下步骤来添加失败截图:
1、创建截图方法:
首先,创建一个方法以捕获并保存测试失败时的屏幕截图。
public static String takeScreenshot(ITestResult result) {TakesScreenshot ts = (TakesScreenshot) driver;File srcFile = ts.getScreenshotAs(OutputType.FILE);String destFilePath = "path_to_screenshots/" + result.getName() + ".png";File destFile = new File(destFilePath);try {FileUtils.copyFile(srcFile, destFile);} catch (IOException e) {e.printStackTrace();}return destFilePath;
}
2、在测试方法中调用截图方法:
在相应的测试方法中调用这个方法,并将返回的路径保存到Allure报告中。
@Test
public void testExample() {try {// 测试逻辑} catch (Exception e) {Allure.addAttachment("Failure Screenshot", "image/png", new FileInputStream(takeScreenshot(ITestResult.FAILURE)), ".png");throw e;}
}
示例2:添加用例日志
用例日志可以帮助开发者了解测试执行的详细过程。下面是如何添加日志的步骤:
1、创建日志记录器:
使用Log4j或其他日志框架创建日志记录器。
Logger logger = LogManager.getLogger(MyTestClass.class);
2、在测试执行过程中记录日志:
在测试中添加日志记录,确保在失败的情况下记录相关信息。
@Test
public void testLogging() {logger.info("测试开始");try {// 测试逻辑logger.info("执行中...");} catch (Exception e) {logger.error("测试失败: " + e.getMessage());Allure.addAttachment("用例日志", "text/plain", new ByteArrayInputStream(logger.toString().getBytes()), ".log");throw e;}
}
示例3:添加HTML块
想让你的报告更丰富,HTML块是不错的选择。
1、构建HTML内容:
准备好你想要展示的HTML内容。
String htmlContent = "<div><h2>测试说明</h2><p>这是一个用例的详细说明。</p></div>";
2、在测试中添加HTML:
将这个HTML内容添加到Allure报告中。
Allure.addAttachment("测试说明", "text/html", new ByteArrayInputStream(htmlContent.getBytes()), ".html");
示例4:添加视频记录
全自动化测试时,记录下整个测试过程有助于后续的分析。
- 使用测试框架的录屏功能:
选用能记录视频的框架,或者使用对应的录屏软件。 - 在测试完成时添加视频:
完成测试后,将视频上传到Allure报告中。
Allure.addAttachment("测试视频", "video/mp4", new FileInputStream("path_to_video/video.mp4"), ".mp4");
Allure2的亮点与好处
Allure2各种功能的结合使得它不只是一款简单的报告生成工具。使用Allure2能够为团队带来巨大的好处,包括:
- 提升工作效率:通过清晰的报告,团队可以更快地解决问题,减少测试反馈时间。
- 增加透明度:让团队中的每一个成员都能理解当前的进展和挑战,促进更好的沟通。
- 便于追溯和审计:详尽的日志和截图可以作为后续讨论和改进的依据,提高产品质量。
- 增强产品可靠性:通过系统化地记录测试过程和结果,可以不断优化测试用例,提升产品的可靠性。
薪资待遇对比
在软件测试领域,掌握Allure2的技能往往能显著提升我们的薪资水平。根据最近的市场调查,掌握这一工具的测试开发工程师与不熟悉此工具的工程师的薪资差异巨大。
职位 | 薪资(人民币) |
---|---|
渗透测试工程师 | 15K-30K |
测试开发工程师(熟悉Allure2) | 20K-40K |
测试工程师(不熟悉Allure2) | 12K-25K |
自动化测试工程师(熟悉Allure2) | 25K-50K |
如上表所示,熟悉Allure2的职位薪资普遍高于其他职位。掌握此工具不仅仅是提升了个人技能,更是为今后的职业发展开辟了广阔的道路。
Allure2对软件测试职业的影响与前景
掌握Allure2为测试工程师提供了许多职业发展的优势。在当今技术快速发展的背景下,以下是使用Allure2对职业发展的潜在影响:
- 技能稀缺性:具备Allure2技能的测试工程师相较其他技术人员更具竞争力,能够吸引更多企业的青睐。
- 项目机会增加:各大企业在进行软件测试时,越来越注重测试报告的信息和可视化,熟练掌握Allure2将为工程师提供更多项目机会。
- 跨领域发展:测试和开发之间的界限逐渐模糊,掌握Allure2为测试开发提供了更加灵活的工作空间,有助于测试团队与开发团队更好的协作。
常见问题解答
Q1:Allure2支持哪个测试框架?
A1:Allure2支持多种测试框架,包括JUnit、TestNG、MSTest、Cypress等。
Q2:失败截图支持哪些格式?
A2:失败截图一般支持PNG和JPG格式。
Q3:如何配置Allure2以生成报告?
A3:您需在项目中添加Allure2依赖,并在完成测试后使用Allure CLI生成报告。
Q4:Allure2是否支持实时图表和图形?
A4:是的,Allure2可以生成丰富的图表和图形,直观展示测试结果。
送您一份软件测试学习资料大礼包
推荐阅读
软件测试学习笔记丨Pytest配置文件
测试开发实战 | Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台
技术分享 | app自动化测试(Android)–元素定位方式与隐式等待
软件测试学习笔记丨Mitmproxy使用
软件测试学习笔记丨Chrome开发者模式
软件测试学习笔记丨Docker 安装、管理、搭建服务
软件测试学习笔记丨Postman基础使用
人工智能 | 阿里通义千问大模型
软件测试学习笔记丨接口测试与接口协议
软件测试学习笔记丨Pytest的使用
推荐学习
【霍格沃兹测试开发】7天软件测试快速入门带你从零基础/转行/小白/就业/测试用例设计实战
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)
【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试
【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff
【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享
【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我
【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化
【霍格沃兹测试开发】App 功能测试实战快速入门/adb 常用命令/adb 压力测试
【霍格沃兹测试开发】阿里/ 百度/ 腾讯/ 滴滴/ 字节/ 一线大厂面试真题讲解,卷完拿高薪Offer !
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman 做接口测试,从入门到实战/ 接口抓包(最新最全教程)
相关文章:
提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
Allure2的用途 Allure2是一个用于生成测试报告的框架,广泛应用于自动化测试和手动测试中。它支持多种测试框架,如JUnit、TestNG、MSTest等,通过生动的图表和详细的日志,使得非技术人员也能轻松地理解测试结果。许多团队选用Allur…...
基于IPMI的服务器硬件监控指标解读
在现代化数据中心中,服务器的稳定运行对于保障业务连续性至关重要。为了实时掌握服务器的健康状况,运维团队需要借助高效的监控工具。监控易作为一款功能强大的监控软件,支持使用IPMI(Intelligent Platform Management Interface&…...
VUE字符串转日期加天数
文章为本新手菜鸡的问题记录,如有错误和不足还行大佬指正 文章目录 问题描述解决方法 问题描述 得到一串字符串的日期,因为不是规范的日期格式,无法使用moment().add()方法,那么如何实现增加天数的操作? 解决方法 1…...
Android12 mtk设置插充电器自动开机
Android12 mtk平台通常关机后,插上充电器是进入关机充电流程,显示关机充电动画。 那么根据用户需求,如果需要设置关机之后,实现插上充电器后,自动开机。 正常流程:机器关机 --> 插上充电器 --> 显示…...
JSON路径工具类`JsonPathUtil`的实现与应用
JSON路径工具类JsonPathUtil的实现与应用 作者:zibo 日期:2024/11/25 口号:慢慢学,不要停。 文章目录 JSON路径工具类JsonPathUtil的实现与应用〇、完整代码一、引言二、功能概述三、代码实现详解1. 工具类基础结构2. 核心方法get…...
人名分类器(nlp)
# coding: utf-8 import osos.environ[KMP_DUPLICATE_LIB_OK] True# 导入torch工具 import jsonimport torch # 导入nn准备构建模型 import torch.nn as nn import torch.nn.functional as F import torch.optim as optim # 导入torch的数据源 数据迭代器工具包 from torch.ut…...
斐波那契数列 相关问题 详解
斐波那契数列相关问题详解 斐波那契数列及其相关问题是算法学习中的经典主题,变形与应用非常广泛,涵盖了递推关系、动态规划、组合数学、数论等多个领域。以下是斐波那契数列的相关问题及其解法的详解。 1. 经典斐波那契数列 定义 初始条件࿱…...
Pytorch微调深度学习模型
在公开数据训练了模型,有时候需要拿到自己的数据上微调。今天正好做了一下微调,在此记录一下微调的方法。用Pytorch还是比较容易实现的。 网上找了很多方法,以及Chatgpt也给了很多方法,但是不够简洁和容易理解。 大体步骤是&…...
springboot 使用笔记
1.springboot 快速启动项目 注意:该启动只是临时启动,不能关闭终端面板 cd /www/wwwroot java -jar admin.jar2.脚本启动 linux shell脚本启动springboot服务 3.java一键部署springboot 第5条 https://blog.csdn.net/qq_30272167/article/details/1…...
网络安全基础——网络安全法
填空题 1.根据**《中华人民共和国网络安全法》**第二十条(第二款),任何组织和个人试用网路应当遵守宪法法律,遵守公共秩序,遵守社会公德,不危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠…...
SCAU软件体系结构实验四 组合模式
目录 一、题目 二、源码 一、题目 个人(Person)与团队(Team)可以形成一个组织(Organization):组织有两种:个人组织和团队组织,多个个人可以组合成一个团队,不同的个人与团队可以组合成一个更大的团队。 使用控制台或者JavaFx界面…...
Amazon商品详情API接口:电商创新与用户体验的驱动力
在电子商务蓬勃发展的今天,作为全球最大的电商平台之一,亚马逊(Amazon)凭借其强大的技术实力和丰富的商品资源,为全球用户提供了优质的购物体验。其中,Amazon商品详情API接口在电商创新与用户体验提升方面扮…...
手机无法连接服务器1302什么意思?
你有没有遇到过手机无法连接服务器,屏幕上显示“1302”这样的错误代码?尤其是在急需使用手机进行工作或联系朋友时,突然出现的连接问题无疑会带来不少麻烦。那么,什么是1302错误,它又意味着什么呢? 1302错…...
Android adb shell dumpsys audio 信息查看分析详解
Android adb shell dumpsys audio 信息查看分析详解 一、前言 Android 如果要分析当前设备的声音通道相关日志, 仅仅看AudioService的日志是看不到啥日志的,但是看整个audio关键字的日志又太多太乱了, 所以可以看一下系统提供的一个调试指令…...
Python 网络爬虫操作指南
网络爬虫是自动化获取互联网上信息的一种工具。它广泛应用于数据采集、分析以及实现信息聚合等众多领域。本文将为你提供一个完整的Python网络爬虫操作指南,帮助你从零开始学习并实现简单的网络爬虫。我们将涵盖基本的爬虫概念、Python环境配置、常用库介绍。 上传…...
基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功
基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器,2FSK 的两个频率为:fI15KHz,f23KHz,波特率为 1500 bps,比特0映射为f 载波,比特1映射为 载波。 1)…...
JavaScript的基础数据类型
一、JavaScript中的数组 定义 数组是一种特殊的对象,用于存储多个值。在JavaScript中,数组可以包含不同的数据类型,如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式: 字面量表示法:let fruits [apple…...
第三讲 架构详解:“隐语”可信隐私计算开源框架
目录 隐语架构 隐语架构拆解 产品层 算法层 计算层 资源层 互联互通 跨域管控 本文主要是记录参加隐语开源社区推出的第四期隐私计算实训营学习到的相关内容。 隐语架构 隐语架构拆解 产品层 产品定位: 通过可视化产品,降低终端用户的体验和演…...
JDBC编程---Java
目录 一、数据库编程的前置 二、Java的数据库编程----JDBC 1.概念 2.JDBC编程的优点 三.导入MySQL驱动包 四、JDBC编程的实战 1.创造数据源,并设置数据库所在的位置,三条固定写法 2.建立和数据库服务器之间的连接,连接好了后ÿ…...
Python绘制太极八卦
文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…...
Spring框架特性及包下载(Java EE 学习笔记04)
1 Spring 5的新特性 Spring 5是Spring当前最新的版本,与历史版本对比,Spring 5对Spring核心框架进行了修订和更新,增加了很多新特性,如支持响应式编程等。 更新JDK基线 因为Spring 5代码库运行于JDK 8之上,所以Spri…...
Linux关于vim的笔记
Linux关于vim的笔记:(vimtutor打开vim 教程) --------------------------------------------------------------------------------------------------------------------------------- 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键…...
linux mount nfs开机自动挂载远程目录
要在Linux系统中实现开机自动挂载NFS共享目录,你需要编辑/etc/fstab文件。以下是具体步骤和示例: 确保你的系统已经安装了NFS客户端。如果没有安装,可以使用以下命令安装: sudo apt-install nfs-common 编辑/etc/fstab文件&#…...
【vue】导航守卫
什么是导航守卫 在vue路由切换过程中对行为做个限制 全局前置守卫 route.beforeEach((to, from, next)) > {// to是切换到的路由// from是正要离开的路由// next控制是否允许进入目标路由next(false); //不允许 }路由级别的导航守卫 const routes [{path: /User,name: U…...
基于Matlab实现LDPC编码
在无线通信和数据存储领域,LDPC(低密度奇偶校验码)编码是一种高效、纠错能力强大的错误校正技术。本MATLAB仿真程序全面地展示了如何在AWGN(加性高斯白噪声)信道下应用LDPC编码与BPSK(二进制相移键控&#…...
PostgreSQL 中约束Constraints
在 PostgreSQL 中,约束(Constraints)是用于限制进入数据库表中数据的规则。它们确保数据的准确性和可靠性,通过定义规则来防止无效数据的插入或更新。PostgreSQL 支持多种类型的约束,每种约束都有特定的用途和语法。以…...
✨系统设计时应时刻考虑设计模式基础原则
目录 💫单一职责原则 (Single Responsibility Principle, SRP)💫开放-封闭原则 (Open-Closed Principle, OCP)💫依赖倒转原则 (Dependency Inversion Principle, DIP)💫里氏代换原则 (Liskov Substitution Principle, LSP)&#x…...
【Linux】多线程(下)
目录 一、生产者消费者模型 1.1 概念 1.2 基于阻塞队列 1.3 POSIX信号量 初始化信号量 销毁信号量 等待信号量 发布信号量 1.4 基于环形队列和POSIX信号量 二、线程池 2.1 概念 2.2 代码 三、封装Linux线程库 四、单例模式 4.1 概念 4.2 单例模式的实现方式 4…...
Element-Plus如何修改日期选择器输入框el-date-picker的圆角
使用 el-date-picker 的 style 属性 :style"{ --el-border-radius-base: 10px }"<!-- 日期 --> <el-form-item label"日期" prop"establishmentDate"><el-date-picker v-model"form.establishmentDate" type"dat…...
skywalking es查询整理
索引介绍 sw_records-all 这个索引用于存储所有的采样记录,包括但不限于慢SQL查询、Agent分析得到的数据等。这些记录数据包括Traces、Logs、TopN采样语句和告警信息。它们被用于性能分析和故障排查,帮助开发者和运维团队理解服务的行为和性能特点。 …...
国外photoshop教程网站/湖南网站定制
如果你的项目是通过go mod 的方式构建的且goland中不开启go modules integration,就会有很多引用错误 file -> settings -> go -> go modules - > enable go modules integration -> enable vendoring support automatically...
软件系统设计/seo网站优化推广怎么样
【奥鹏】[南开大学]18春学期(1709、1803)《数据库应用系统设计》在线作业$ p. a Y" t. O% W w6 H. u* X. e试卷总分:100 得分:100" ~% W5 v9 v( P d( G: m3 d第1题,下列关于PHP字符串定界符的描述中,正确的是( )。! \& " i6 o5 QA、字符串的定界符只…...
做仿网站公司/济南百度开户电话
本文我们来梳理一下Spring的那些注解,如下图所示,大概从几方面列出了Spring的一些注解:如果此图看不清楚也没事,请运行下面的代码输出所有的结果。Spring目前的趋势是使用注解结合Java代码而不是配置来定义行为、属性、功能、规则…...
电商网站制作案例/西安百度竞价推广
1.1 整除 This is the link 1.2 同余 This is the link 1.3 最大公约数 This is the link 1.4 逆元 This is the link 1.5 中国剩余定理 This is the link 1.6 斐波那契数列 This is the link 1.7 卡塔兰数 This is the link 1.8 素数 This is the link 1.8.3 素数测试…...
天天自学网网址/seo网站优化课程
啥是个分布式锁 普通的锁只能解决单个应用的多线程同步问题。 分布式锁解决多个节点(多个应用)之间的同步问题。 Redis官方提供了一种分布式锁:RedLock RedLock的特性 安全特性:互斥访问,即永远只有一个 client 能…...
武汉那些网站做家教的/怎样创建自己的网站
post请求时一般参数放在body里面,选择json格式,如下所示:...