zoukankan      html  css  js  c++  java
  • Testng Retry失败用例重新运行的方法(二)

    上一篇总结了下retry的基本使用方法,但是有一个问题,就是在报告中,一个用例统计了多次,对报告的数据统计造成了影响。为了消除这种影响,需要在listener类中做下改变。RetryListener.java使用继承TestListenerAdapter的方式实现,通过重载onFinish()方法,处理最后TestCase的Result,只统计一次执行结果。

    package com.sso;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Method;
    import java.util.Iterator;
    import org.testng.IRetryAnalyzer;
    import org.testng.ITestContext;
    import org.testng.ITestNGMethod;
    import org.testng.ITestResult;
    import org.testng.TestListenerAdapter;
    import org.testng.annotations.ITestAnnotation;
    
    public class RetryListener extends TestListenerAdapter {
      @SuppressWarnings("rawtypes")
      public void transform(ITestAnnotation annotation, Class testClass,
          Constructor testConstructor, Method testMethod) {
        IRetryAnalyzer retry = annotation.getRetryAnalyzer();
        if (retry == null) {
          annotation.setRetryAnalyzer(TestngRetry.class);
        }
      }
      
        @Override
        public void onFinish(ITestContext testContext) {
            Iterator<ITestResult> listOfFailedTests = testContext.getFailedTests().getAllResults().iterator();
            while(listOfFailedTests.hasNext()){
                ITestResult failedTest = listOfFailedTests.next();
                ITestNGMethod method = failedTest.getMethod();
                if(testContext.getFailedTests().getResults(method).size()>1){
                    listOfFailedTests.remove();
                }else{
                    if(testContext.getPassedTests().getResults(method).size()>0){
                        listOfFailedTests.remove();
                    }
                }
            }
        } 
    }

    其他类文件无变化,执行testng,得到结果:

    [RemoteTestNG] detected TestNG version 6.14.3
    
    ===============================================
    Suite
    Total tests run: 1, Failures: 1, Skips: 0
    ===============================================
    

    有一点需要提醒的是,Retry机制在遇到DataProvider的时候会失效,无法统计失败用例。

  • 相关阅读:
    2017年10月9日 冒泡&去重复习
    2017 年9月29日 弹出层特效
    2017 年9月28日 三级联动
    2017 年 9 月 27 日 js(文本框内容添加到select)
    2017 年 9 月 27 日 js(1.两个select 内容互换 2.单选按钮 同意可点击下一步 3. 全选框)
    2017 年 9 月26 日
    linux运维的认知及RHEL7 Unix/Linux 系统 介绍和安装
    Zabbix配置文件详解之服务端zabbix_server
    LoadRunner安装+汉化+破解
    zabbix告警“Zabbix poller processes more than 75% busy”
  • 原文地址:https://www.cnblogs.com/xbxblog/p/9843768.html
Copyright © 2011-2022 走看看