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

  • 相关阅读:
    JavaScript.对象分类
    基于NDK的Android防破解& Android防破解 【转载】
    C++ 关键字——friend【转载】
    Python基础教程学习笔记:第二章 列表和元组
    Android安装器学习笔记(一)
    Python基础教程学习笔记:第一章 基础知识
    Android重写HorizontalScrollView仿ViewPager效果
    C语言realloc,malloc,calloc的区别【转载】
    Objective-C 协议和运行时检查方法、类是否存在
    下拉刷新 上拉更多 支持ListView GridView WebView【转载】
  • 原文地址:https://www.cnblogs.com/xbxblog/p/9843768.html
Copyright © 2011-2022 走看看