一、首先新建Java类实现IRetryAnalyzer接口,代码如下(主要配置自动重跑次数maxRetryCount):
[java] view plain copy
public class OverrideIReTry implements IRetryAnalyzer {
public static Logger logger=LoggergetLogger(OverrideIReTryclass);
public int retryCount=0;
private static int maxRetryCount ;
static {
//外围文件配置最大运行次数,失败后重跑maxRetryCount+1次
maxRetryCount = 2;//也就是失败后重跑3次
loggerinfo("maxRunCount=" + (maxRetryCount));
}
@Override public boolean retry(ITestResult iTestResult){
if(retryCount <= maxRetryCount){String message = "running retry for '" + iTestResultgetName() + "' on class " +
thisgetClass()getName() + " Retrying " + retryCount + " times";
loggerinfo(message);
ReportersetCurrentTestResult(iTestResult);
Reporterlog("RunCount=" + (retryCount + 1));
retryCount++;
return true;
} return false;
}
}
二、新建Java类实现IAnnotationTransformer接口,代码如下:[java] view plain copy
package TezitongAll;
import javalangreflectConstructor;
import javalangreflectMethod;
import orgtestngIAnnotationTransformer;
import orgtestngIRetryAnalyzer;
import orgtestngannotationsITestAnnotation;
public class RetryListener implements IAnnotationTransformer {
@Override
public void transform(ITestAnnotation annotation, @SuppressWarnings("rawtypes") Class testClass,@SuppressWarnings("rawtypes") Constructor testConstructor, Method testMethod) {
IRetryAnalyzer retry = annotationgetRetryAnalyzer();
if (retry == null) {
annotationsetRetryAnalyzer(OverrideIReTryclass);
}
}
}
可在配置testng的环境变量设置。新建一个TESTNG目录,用来存放依赖jar包,如放置C盘,配置系统变量:计算机-属性-高级系统设置-高级-环境变量-系统变量,变量名:TESTNG_HOME,变量值:C:\TESTNG,ClASSPAT与前面配置用;隔开H加入,cmd执行testngxml文件,进入testngxml文件目录执行命令java orgtestngTestNG testngxml,最后重启就可以了。数据驱动是最常见的自动化测试框架模式之一,TestNG亦支持数据驱动,常用的有@Parameters和@DataProvider两种注解。这次主要是记录dataprovider的用法。
使用DataProvider提供数据有两种形式:
定义一个函数,函数名随意取,使用@DataProvider注解,注解中用name给这个provider起名字,该函数返回一个二维数组。
可以看到该测试方法运行了3次,每一次都把一个DataProvider提供的数组作为自己的参数输入然后执行了测试。
这种方式需通过dataProviderClass属性来指定@DataProvider类位置,并且@DataProvider注解的方法保持静态(static)。示例:
运行test后,结果:
除了上述的return Object[][],@DataProvider注解的方法也允许使用迭代器,区别是迭代器允许你延迟创建自己的测试数据,TestNG会调用迭代器,之后测试方法会一个接一个的调用由迭代器返回的值。在你需要传递很多参数组给测试方法的时候,无须提前创建一堆值。
如果希望DataProvider对不同的Test方法使用不同的dataprovider,那么在DataProvider中可以使用Method参数。
这里根据调用DataProvider的函数名,返回了不同的参数。
由于没有指定运行顺序,所以Test会按照字母顺序执行,先执行getFirst,然后getSecond
参考文档:
1、 >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)