• 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的时候会失效,无法统计失败用例。

  • 相关阅读:
    深入了解 JavaScript 中的 for 循环
    JavaScript 字符串常用操作
    10个习惯助你成为一名优秀的程序员
    Ubuntu日常问题搜集和解决办法
    提升你的开发效率,10 个 NPM 使用技巧
    Redux教程3:添加倒计时
    Redux教程2:链接React
    Redux教程1:环境搭建,初写Redux
    React + Redux 入坑指南
    12个非常实用的JavaScript小技巧
  • 原文地址:https://www.cnblogs.com/xbxblog/p/9843768.html
Copyright © 2020-2023  润新知