上一章中 可能很多人不知道@Test(retryAnalyzer= OverrideRetry.class) 是干嘛的 请求的是什么  这一张主要讲一下监听器的使用

 

  可能大家做接口测试的时候要随时的知道报错的时候以及问题的原因 为了更好的给开发找到问题 所以今天给大家讲一下 监听器的作用  

   TestNG提供了三个IAnnotationTransformer系列的监听器,这3个监听器的目的都是在TestNG执行过程中动态改变测试类中Annotation的参数。其区别在于不同的IAnnotationTransformer监听器,能够操作的Annotation不同,具体情况如下:

 

  • IAnnotationTransformer,操作@Test标注
  • IAnnotationTransformer2,操作@Configuration标注、@DataProvider标注和@Factory标注
  • IAnnotationTransformer3,操作@Listeners标注

 

   下面给大家个简单的小例子:

 

  


// 统计测试用例失败的次数的类,接口IAnnotationTransformer,判断用例是否达到重试的要求,IRetryAnalyzer接口实现
public class OverrideRetry implements IRetryAnalyzer{

private int count = 1; //统计测试用例失败的次数
private int Max_Fail_Count = 3; //测试用例最大失败次数

//使用

public boolean retry(ITestResult iTestResult) {

String msg = "执行用例:"+iTestResult.getName()+"第"+count+"次运行失败";
System.out.println(iTestResult);
Reporter.log(msg);
if(count<Max_Fail_Count){
count++;
return true;
}
return false;
}

 

public class OverrideTransformer implements IAnnotationTransformer {


@SuppressWarnings("rawtypes")
public void transform(ITestAnnotation iTestAnnotation,
Class class1, Constructor constructor, Method method) {

IRetryAnalyzer iRetryAnalyzer = iTestAnnotation.getRetryAnalyzer();
System.out.println("transform(),iRetryAnalyzer:"+iRetryAnalyzer);
if(iRetryAnalyzer==null){
iTestAnnotation.setRetryAnalyzer(OverrideRetry.class);
}

}

 

posted on 2019-08-30 16:01  卿唇  阅读(876)  评论(0)    收藏  举报