TestNG – 运行失败的test

  • Post author:
  • Post category:其他


testNG 重试失败的case有两种方式:

1、所有case全部执行完后,主动触发执行所有失败的case

2、case失败后立即重试

1、运行所有的失败的case

testNG运行测试用例的时候会创建一个testng-failed.xml文件,这个文件里面包含了所有的失败的测试用例。触发执行testng-failed.xml文件

可以使用Maven命令执行此文件 mvn clean -Dxml.file=XX/testng-failed.xml test

2、自动重试失败的测试用例

//1.实现IRetryAnalyzer方法
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
 
public class MyRetry implements IRetryAnalyzer {
 
  private int retryCount = 0;
  private static final int maxRetryCount = 3;
 
  @Override
  public boolean retry(ITestResult result) {
    if (retryCount < maxRetryCount) {
      retryCount++;
      return true;
    }
    return false;
  }
}


//2.在测试用例上添加注解
import org.testng.Assert;
import org.testng.annotations.Test;
 
public class TestclassSample {
 
  @Test(retryAnalyzer = MyRetry.class)
  public void test2() {
    Assert.fail();
  }
}

每次都在测试用例上添加注解太麻烦了,我们可以实现IAnnotationTransformer方法,可以修改@Test注解的属性

public class MyTransformer implements IAnnotationTransformer {
  public void transform(ITest annotation, Class testClass,
      Constructor testConstructor, Method testMethod)
  {
     annotation.setRetryAnalyzer(MyRetry.class);
  }
}



note:


IAnnotationTransformer只能在 testng.xml 添加,因为TestNG要实施修改注释的操作

3、Maven+testNG 执行失败的case

在pom中进行入下配置,执行命令mvn test -Dxml.file=test-output/testng-failed.xml 就可以重试失败的case了

注意:

1、testng.xml不需要改成对应的保存失败用例的文件名称,只是定义了一个变量,因此执行不同的测试套件时不需要修改pom.xml文件

2、-D表示properties属性,根据后面的变量名可以覆盖pom文件中设置的值,变量名定义的是xml.file所以这里就需要写成-Dxml.file,如果变量名定义的是suiteXmlFile,那么命令就变成了mvn clean test -DsuiteXmlFile=test-output/testng-failed.xml

……
<properties>

        <xml.file>testng.xml</suiteXmlFile>

</properties>
……
<plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-surefire-plugin</artifactId>

         <version>2.16</version>

                <configuration>

                    <argLine>-Dfile.encoding=UTF-8</argLine>

                    <suiteXmlFiles>

                        <suiteXmlFile>${xml.file}</suiteXmlFile>

                    </suiteXmlFiles>

                </configuration>

 </plugin>
……



版权声明:本文为Clever99原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。