TestNG设置用例循环执行
曾经做过一需求,需要单个集成测试用例循环执行N次,或许你会说for循环就可以了,这当然是可以的。那有没有逼格更高点的方法,当然也是有的。下面我们就说下使用TestNG注解功能实现用例的循环执行。
1、直接使用注解
//invocationCount 即表示该用例循环执行多少次
@Test(invocationCount = 3)
public void test() {
System.err.println("1222");
}
该方法有一个弊端,如果用例比较多,修改循环次数就会比较麻烦,需要一个一个去修改。
2、使用监听功能
2.1、实现监听接口
/**
* 实现IAnnotationTransformer 接口
* @author houlandong
*
*/
public class RetryListener implements IAnnotationTransformer{ @Override
public void transform(ITestAnnotation annotation, Class testClass,
Constructor testConstructor, Method testMethod) { //统一设置循环次数
annotation.setInvocationCount(5);
}
}
2.2、配置监听
<suite name="TradeTest" preserve-order="true" parallel="false"
thread-count="5" annotations="javadoc" skipfailedinvocationcounts="true"
configfailurepolicy="continue">
<test name="TradeTest" verbose="2" preserve-order="true" parallel="false"
thread-count="5" annotations="javadoc" group-by-instances="false"
skipfailedinvocationcounts="true" configfailurepolicy="continue">
<classes>
<!--需要执行的用例-->
<class name="com.enniu.cloud.services.tmsdefender.util.Leohou" />
</classes>
</test>
<listeners>
<!--实现的监听接口-->
<listener class-name="com.enniu.cloud.services.tmsdefender.util.RetryListener" />
</listeners>
</suite>
注意:
1、该方法需要配合mvn test和testng.xml(TestNG的灵魂,可以自行百度进行更多的了解) 一起使用,在xml文件中配置我们实现的监听,这样就统一配置了该suite包含的所有用例的循环次数。
2、监听设置的优先级> 直接使用注解的方式,所以该方法不方便设置某一个用例的循环次数。
我是通过配置文件来实现的
// 统一设置循环次数
annotation.setInvocationCount(5); // 设置 需要特殊处理方法的循环次数
String excepLoopCount = property.getProperty("excepLoopCount");
String[] excepCount = excepLoopCount.split(";");
for (int i = 0; i < excepCount.length; i++) {
String[] temp = excepCount[i].split(",");
if (testMethod.getName().equals(temp[0])) { LogUtil.info("该方法循环" + temp[1] + "次");
annotation.setInvocationCount(Integer.valueOf(temp[1]));
}
}
即通过配置文件把需要特殊处理的类和循环次数 再次进行单独设置。
具体要怎么使用,需要根据业务具体分析了
TestNG设置用例循环执行的更多相关文章
- OpenCL多次循环执行内核的一个简单样例
最近有不少朋友在多次循环执行OpenCL内核程序的时候碰到一些问题.由于对OpenCL初学者而言可能比较普遍,因此我这里给出一个清晰简单的demo来掩饰如何简单又高效地执行循环执行OpenCL内核. ...
- 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...
- 『学了就忘』Linux系统定时任务 — 88、循环执行定时任务
目录 1.crond服务管理与访问控制 2.crontab命令的访问控制 3.用户级别的crontab命令 4.crontab命令的注意事项 5.系统的crontab设置 (1)/etc/cronta ...
- TestNg线程池配置、执行次数配置、超时配置
使用注解的方式对TestNg线程池配置.执行次数配置.超时配置 注:使用注解来控制测试方法运行的次数和超时时间,timeOut在单线程或者多线程模式下都可用,threadPoolSize设置了线程池的 ...
- Linux学习-循环执行的例行性工作排程
循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...
- C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断
C#保留2位小数几种场景总结 场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...
- js获取时间,循环执行任务,延迟执行任务
一.获取时间 核心方法创建一个时间对象:new Date() 时间对象相关操作 时间对象.函数名 函数名 功能 getYear() 获取四位数的年份 getMonth() 获取2位数的月数, 这个是从 ...
- jmeter-多用户循环执行(存储token)
1.从cvs文件中读取数据 登录接口读取文件: 2.读取token,保存token 在登录接口下添加 设置: 把token保存为全局变量: 设置: 输入${__setProperty(newtoken ...
- JS定时器使用,定时定点,固定时刻,循环执行
JS定时器使用,定时定点,固定时刻,循环执行 本文概述:本文主要介绍通过JS实现定时定点执行,在某一个固定时刻执行某个函数的方法.比如说在下一个整点执行,在每一个整点执行,每隔10分钟定时执行的方法. ...
随机推荐
- 用mycat做读写分离:基于 MySQL主从复制
版权声明:本文为博主原创文章,未经博主允许不得转载. mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的 搭建之前我们先要配置MySQL的主从复制,这个 ...
- CodeForces 159E
题目大意: 给定一堆带颜色和高度的魔方 用两种颜色的魔方,一种颜色接一种颜色向上拼接搭建成一个高塔,求高塔的最长高度,以及将拼接的过程中对应的编号顺序输出 多种情况成立输出任意一种即可 这里首先要对颜 ...
- Django:(5)分页器 & forms组件
Django组件:分页器 目录结构: urls.py from django.contrib import admin from django.urls import path from app01 ...
- android开发里跳过的坑——android studio 错误Error:Execution failed for task ':processDebugManifest'. > Manifest merger failed with multiple errors, see logs
使用AS在gradle里配置了多个定制版本,发现在编译版本切换时,会出现错误: Error:Execution failed for task ':processDebugManifest'.> ...
- HDU 1754 I Hate It (Splay 区间操作)
题目大意 维护一个序列,支持两种操作 操作一:将第x个元素的值修改为y 操作二:询问区间[x,y]内的元素的最大值 解题分析 splay的区间操作,事先加入两个编号最小和最大的点防止操作越界. 具体的 ...
- 怎样把UCos-ii_在STM32上的移植
下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它能够大大加速我们 开发 stm32. 首先从 st 公司的站点下载最新的 stm32 标准外设库,写本文时最新的版本号是 V ...
- [GraphQL] Query Local and Remote Data in Apollo Link State
In this lesson, you will learn how to query local and remote data in Apollo Link State in the same c ...
- [Spring] Bean Scope Singleton cs Prototype
We can define a class to be Singleton or Prototype. If the class was defined as Prototype, then ever ...
- Hadoop HDFS NFS GateWay部署深入具体解释
目的:通过挂载的方式,能够相似訪问本地磁盘的方式一样的訪问Hadoop文件.简单.方便.快捷. 0.系统版本号&hadoop版本号 1)系统版本号 [root@WEB-W031 sbin]# ...
- C/C++实现正负数四舍五入
首先我们来看看 (int) 强制类型转换: #include <stdio.h> #include <stdlib.h> int main(){ int a = (int)(- ...