提升软件测试报告的质量: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…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
