TestNG开源插件Arrow介绍

来自孔庆云kevin   2014-03-04 17:16:17|  分类: 测试工具

TestNG是一个设计用来简化广泛测试需求的 测试框架,旨在涵盖所有类型的测试,包括单元测试、功能测试、端到端集成测试等,而我们在基于TestNG搭建自动化测试框架,编写测试用例时,为保证测 试用例的稳定性,需要增加测试用例失败自动重跑功能,这便促成了Arrow的诞生。 Arrow是基于TestNG监听器扩展的插件,如果把TestNG比作一把强劲的弓,那么插件就是配合弓使用的箭,这也是Arrow命名的由来。

当前Arrow插件已开源,可通过以下地址访问:https://github.com/NetEase/arrow

一、Arrow功能介绍

1、  支持通过简单配置实现失败的测试用例自动重跑

2、  支持Html结果报告中展示测试用例运行次数

3、  支持自动解析源代码中的@author标签,在Html结果报告中展示(失败用例可以方便查找维护者)

4、  修复TestNG原生Html报告中锚点跳转不正确的Bug

俗话说,眼见为实耳听为虚,下面就带大家看看实际效果图吧!

二、Arrow使用效果

使用Arrow插件运行基于TestNG的测试用例后会生成我们自定义的报告power-emailable-report.html,下图1显示 在测试用例中书写@author标签,使用arrow执行完用例后生成如图2的结果报告,报告中会自动读取authors信息以及running counts运行次数,通过authors信息方便自动获取到该用例的维护者,通过running counts方便知道当前用例是否失败重跑。

图1

图2

三、如何使用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中没有把这个功能集成进来,但是如果你需要该功能也可以很方便的进行扩展。

1、 在这里下载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介绍相关推荐

  1. chrome 插件 vimium 介绍

    chrome 插件 vimium 介绍 vimium是一个chrome插件,用于在chrome中提供像vim这样的纯键盘的快捷操作方式. chrome webstore 链接 该插件是开源的,使用co ...

  2. 如何利用开源插件?又快又好地搞好数据接口开发,连通不同应用系统

    目录 前言介绍: 开源插件 Tapdata PDK 快速开始目标数据库接入 准备环境 下载源码并编译 创建目标数据库的Connector工程 开发完成之后通过 TDD 进行测试验证 如何提交到 PDK ...

  3. OPNFV董事邓辉:网络功能虚拟化开源平台OPNFV介绍

    2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN/NFV的实践应用与部署,从SDN/N ...

  4. 索赔 100 万!只是因为一个开源插件?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 这两天网上沸沸扬扬的讨论着一件事情,即一位独立开发者因为 ...

  5. open source license主流的开源软件协议介绍

    open source license主流的开源软件协议介绍(20190222) 文章目录: 一.开源软件的直观介绍 二.常用开源协议介绍 三.常用开源协议之间的对比 当Adobe.Microsoft ...

  6. 常用开源Jabber服务器介绍

    常用开源Jabber服务器介绍 1. Openfire (Wildfire) 3.x 授权:GPL or 商用 操作系统平台:所有(使用Java开发) XMPP Jabber 协议实现情况:98% T ...

  7. .NET 开源项目 StreamJsonRpc 介绍[下篇]

    阅读本文大概需要 9 分钟. 大家好,这是 .NET 开源项目 StreamJsonRpc 介绍的最后一篇.上篇介绍了一些预备知识,包括 JSON-RPC 协议介绍,StreamJsonRpc 是一个 ...

  8. ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

    ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为:传送门  其中包含:三维造型设计文件(所有零件+装配效果)(tips:基于Solidwor ...

  9. YugaByte DB 分布式 开源 关系型数据库介绍

    YugaByte DB 分布式 开源 关系型数据库介绍 什么是YugaByte DB? YugaByte DB是一个高性能的分布式SQL数据库,用于为全球互联网规模的应用程序提供支持.YugaByte ...

最新文章

  1. 认识人和鱼的AI,能识别美人鱼吗?阿里CVPR论文试用因果推理方法解答
  2. 通过OWA修改密码,提示您输入的密码不符合最低安全要求
  3. Apache基金会接收阿里RocketMQ为孵化项目
  4. java item方法_Java常用方法
  5. WEBSHELL权限提升 菜菜
  6. A - C语言实验——最值
  7. html表示主题内容的标签是,HTML 基本标签
  8. ORM数据库框架 LitePal SQLite MD
  9. mid、mif文件操作工具类
  10. win10系统通过关键字快速搜索文件内容的软件
  11. Python实现视频中的音频提取
  12. python plot坐标轴显示比例一致_绘图,x轴和y轴的比例相同
  13. saas-export项目service层
  14. 在PyCharm环境中使用graphviz遇到的问题
  15. 支付宝通过招行网上银行付钱,最多每笔500块
  16. 关于微信分享 签名不一致的问题解决
  17. 数据库并发入门学习笔记,怎么写入redis的数据,配置缓存。
  18. 钉钉小程序企业内部应用开发总结
  19. 学习--unix信号
  20. Java_题目_面向对象文字花钱格斗游戏

热门文章

  1. Soul网关源码解析(二)代理Http请求
  2. freeMaker 三目(三元)表达式
  3. static修饰符和final修饰符
  4. 科教导刊杂志科教导刊杂志社科教导刊编辑部2022年第9期目录
  5. P1122 最大子树和
  6. 再度升级:深入分析针对金融科技公司的Evilnum恶意软件及组件
  7. 帝国CMS教程:ECMS(帝国CMS)搜索伪静态
  8. 大疆无人机安卓Mobile Sdk开发(五)解决M300Rtk H20相机无法获取图片视频的问题
  9. 03-JSX的语法规则
  10. WINDOWS TCP最大连接数