在testng中识别测试用例列表失败

时间:2018-05-25 15:27:12

标签: testng

您能否告诉我如何使用testng识别套件执行失败的测试用例列表。我需要自动重新运行失败的测试用例。

提前致谢!

1 个答案:

答案 0 :(得分:1)

作为执行的一部分,testng会生成一个名为testng-failed.xml的文件,其中包含失败方法的所有详细信息。如果您只是想重新运行失败的测试,您可以找到此文件(在它位于target文件夹下的maven项目中。

您可以执行以下操作(我假设您正在使用maven):

  1. 通过Maven属性接受您的surefire插件中的套件名称。
  2. 修改surefire插件以引用套件名称的maven属性。
  3. 创建执行以下操作的shell脚本或批处理文件:
    1. 检查目标文件夹中是否存在testng-failed.xml文件。
    2. 如果找到,则可以重新运行。
    3. 将surefire报告文件夹备份到其他地方,这是因为如果没有完成,那么旧报告将被覆盖。
    4. 通过将testng-failed.xml位置传递到您的surefire插件中使用的Maven属性来重新运行测试。
  4. 应该这样做。

    另一种选择是基本构建org.testng.IRetryAnalyzer的实现,并将其与@Test方法绑定。如果失败,这将导致TestNG再次尝试调用@Test方法,直到IRetryAnalyzer实现返回false,表明TestNG不再尝试。

    这是一个样本

    public class MyRetry implements IRetryAnalyzer {
    
      private int retryCount=0;
      private int maxRetryCount=1;
    
      @Override
      public boolean retry(ITestResult result) {
        if (retryCount < maxRetryCount) {
          retryCount++;
          return true;
        }
        return false;
      }
    }
    

    public class GitHub1241Sample {
    
      @Test(retryAnalyzer = MyRetry.class)
      public void test2() {
        Assert.fail();
      }
    }
    

    如果您使用重试分析器,则无需备份报告等,