TestNG开源插件Arrow介绍-阿里云开发者社区

开发者社区> 沉默术士> 正文

TestNG开源插件Arrow介绍

简介:
+关注继续查看
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 #定义源代码路径,不是必填项, 默认值是src
  sourcecodeencoding=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方法中加入如下代码
@Override
public void onTestFailure(ITestResult tr) {
super.onTestFailure(tr);
saveScreenShot(tr);
}
@Override
public 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的测试工作。


最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
我的mqtt协议和emqttd开源项目个人理解(19) - emq软件版本升级之后,因插件版本不对而引发的问题
我的mqtt协议和emqttd开源项目个人理解(19) - emq软件版本升级之后,因插件版本不对而引发的问题
25 0
SQL Plan Management介绍
基于成本的优化法则基于统计信息找到最优执行计划,但是一些环境的变化可能影响执行计划的改变如: ·         New optimizer version ·         Changes to optimizer statist...
764 0
《阿里巴巴Java开发规约》插件使用介绍
一、简介     阿里巴巴于10月14日在杭州云栖大会上,正式发布了《阿里巴巴Java开发规约》扫描插件!该插件基于《阿里巴巴Java开发规约》手册内容,在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。
2189 0
Web Service依赖的jar包介绍
This directory includes the CXF jar, the CXF manifest jar, the required dependencies, and many optional dependencies. The "modules" directory contains the cxf.jar split up into smaller pieces if
1581 0
AndroidStudio笔记(2)插件介绍
前言 Android Studio作为基于IDE的专业开发Android的开发工具,插件市场为我们提供了各种方便快捷、提高工作效率的插件,本文记录一些比较常用的插件。
1207 0
RedisManager使用手册(六)-- 监控功能介绍
RedisManager Monitor功能和query功能介绍,Monitor模块对Redis 集群的重要指标进行监控,如平均内存占用、客户端连接数、cache命中率,节点内存碎片等,Monitor 模块中支持查看 Config、Info、Slowlog 和查询数据功能。
1879 0
+关注
5518
文章
253
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载