TestNG开源插件Arrow介绍
TestNG开源插件Arrow介绍
来自孔庆云kevin 2014-03-04 17:16:17| 分类: 测试工具
TestNG是一个设计用来简化广泛测试需求的 测试框架,旨在涵盖所有类型的测试,包括单元测试、功能测试、端到端集成测试等,而我们在基于TestNG搭建自动化测试框架,编写测试用例时,为保证测 试用例的稳定性,需要增加测试用例失败自动重跑功能,这便促成了Arrow的诞生。 Arrow是基于TestNG监听器扩展的插件,如果把TestNG比作一把强劲的弓,那么插件就是配合弓使用的箭,这也是Arrow命名的由来。
当前Arrow插件已开源,可通过以下地址访问:https://github.com/NetEase/arrow
一、Arrow功能介绍
3、 支持自动解析源代码中的@author标签,在Html结果报告中展示(失败用例可以方便查找维护者)
4、 修复TestNG原生Html报告中锚点跳转不正确的Bug
二、Arrow使用效果
三、如何使用Arrow
1、 首先你需要有一套TestNG编写的测试用例
2、 测试工程中需要testng.jar(核心不能忘!),log4j.jar(用于日志的输出)以及我们提供的arrow.jar
3、 测试工程根目录下新建config.properties文件,同时配置如下参数
retrycount=1 #定义重跑次数,不是必填项, 默认值是0,即失败不重跑sourcecodedir=src #定义源代码路径,不是必填项, 默认值是srcsourcecodeencoding=UTF-8 #定义源代码编码,不是必填项,默认值是utf-8
4、 在build.xml文件中加入监听器,配置如下,配置完成后通过ant运行TestNG测试用例后可以在生成的Html结果报告中查看效果
<target name="testng"> <mkdir dir="test-output" /> <testng outputDir="test-output" haltonfailure="false" listeners="com.netease.qa.testng.PowerEmailableReporter, com.netease.qa.testng.RetryListener, com.netease.qa.testng.TestResultListener"> <xmlfileset dir="." includes="testng.xml" /> </testng> </target>
5、 如果您不习惯4的做法,可以在testng.xml中加入如下的监听器,配置完成后右键testng.xml文件运行测试用例即可
<listeners> <listener class-name="com.netease.qa.testng.TestResultListener" /> <listener class-name="com.netease.qa.testng.RetryListener" /> <listener class-name="com.netease.qa.testng.PowerEmailableReporter" /> </listeners>
四、Arrow扩展-失败用例自动截图
由于截图功能在不同的测试框架上API会不同,所以当前Arrow中没有把这个功能集成进来,但是如果你需要该功能也可以很方便的进行扩展。
2、 修改TestResultListener类,在onTestSkipped以及onTestFailure方法中加入如下代码
@Overridepublic void onTestFailure(ITestResult tr) {super.onTestFailure(tr);saveScreenShot(tr);}@Overridepublic void onTestSkipped(ITestResult tr) {super.onTestSkipped(tr);saveScreenShot(tr);}private void saveScreenShot(ITestResult tr) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");String mDateTime = formatter.format(new Date());String fileName = mDateTime + "_" + tr.getName();String filePath = "";try {//这里可以调用不同框架的截图功能File screenshot = ((TakesScreenshor)webdriver).getScreenshotas(OutputType.FILE);filePath = “screenshot/” + filename + “.jpg”File destFile = new File(filePath);FileUtils.copyFile(screenshot, destFile);} catch (Exception e) {filePath = fileName + " firefox tackScreentshot Failure:" + e.getMessage();logger.error(filePath);}if (!"".equals(filePath)) {Reporter.setCurrentTestResult(tr);Reporter.log(filePath);//把截图写入到Html报告中方便查看Reporter.log("<img src=\"../" + filePath + "\"/>");}}
3、修改完成后重新运行测试用例,即可实现失败自动截图,同时会把截图写入到Html结果报告中,方便定位问题,如图3。
图3
最后,欢迎大家使用以及共同改进Arrow,方便大家基于TestNG的测试工作。
TestNG开源插件Arrow介绍相关推荐
- chrome 插件 vimium 介绍
chrome 插件 vimium 介绍 vimium是一个chrome插件,用于在chrome中提供像vim这样的纯键盘的快捷操作方式. chrome webstore 链接 该插件是开源的,使用co ...
- 如何利用开源插件?又快又好地搞好数据接口开发,连通不同应用系统
目录 前言介绍: 开源插件 Tapdata PDK 快速开始目标数据库接入 准备环境 下载源码并编译 创建目标数据库的Connector工程 开发完成之后通过 TDD 进行测试验证 如何提交到 PDK ...
- OPNFV董事邓辉:网络功能虚拟化开源平台OPNFV介绍
2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN/NFV的实践应用与部署,从SDN/N ...
- 索赔 100 万!只是因为一个开源插件?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 这两天网上沸沸扬扬的讨论着一件事情,即一位独立开发者因为 ...
- open source license主流的开源软件协议介绍
open source license主流的开源软件协议介绍(20190222) 文章目录: 一.开源软件的直观介绍 二.常用开源协议介绍 三.常用开源协议之间的对比 当Adobe.Microsoft ...
- 常用开源Jabber服务器介绍
常用开源Jabber服务器介绍 1. Openfire (Wildfire) 3.x 授权:GPL or 商用 操作系统平台:所有(使用Java开发) XMPP Jabber 协议实现情况:98% T ...
- .NET 开源项目 StreamJsonRpc 介绍[下篇]
阅读本文大概需要 9 分钟. 大家好,这是 .NET 开源项目 StreamJsonRpc 介绍的最后一篇.上篇介绍了一些预备知识,包括 JSON-RPC 协议介绍,StreamJsonRpc 是一个 ...
- ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍
ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为:传送门 其中包含:三维造型设计文件(所有零件+装配效果)(tips:基于Solidwor ...
- YugaByte DB 分布式 开源 关系型数据库介绍
YugaByte DB 分布式 开源 关系型数据库介绍 什么是YugaByte DB? YugaByte DB是一个高性能的分布式SQL数据库,用于为全球互联网规模的应用程序提供支持.YugaByte ...
最新文章
- 认识人和鱼的AI,能识别美人鱼吗?阿里CVPR论文试用因果推理方法解答
- 通过OWA修改密码,提示您输入的密码不符合最低安全要求
- Apache基金会接收阿里RocketMQ为孵化项目
- java item方法_Java常用方法
- WEBSHELL权限提升 菜菜
- A - C语言实验——最值
- html表示主题内容的标签是,HTML 基本标签
- ORM数据库框架 LitePal SQLite MD
- mid、mif文件操作工具类
- win10系统通过关键字快速搜索文件内容的软件
- Python实现视频中的音频提取
- python plot坐标轴显示比例一致_绘图,x轴和y轴的比例相同
- saas-export项目service层
- 在PyCharm环境中使用graphviz遇到的问题
- 支付宝通过招行网上银行付钱,最多每笔500块
- 关于微信分享 签名不一致的问题解决
- 数据库并发入门学习笔记,怎么写入redis的数据,配置缓存。
- 钉钉小程序企业内部应用开发总结
- 学习--unix信号
- Java_题目_面向对象文字花钱格斗游戏