gpt4 book ai didi

testing - TestNG - 如何在套件完成后重新运行失败的测试

转载 作者:行者123 更新时间:2023-11-28 21:36:30 24 4
gpt4 key购买 nike

如何在 TestNG 中完成套件后重新运行失败的测试。使用 RetryAnalyzer,我可以在失败的测试用例之后立即重新运行失败的测试用例,但不能在套件完成之后重新运行。

我需要这个的原因:我的测试用例在 20 多个线程上并行运行,我的一些测试系统在此负载上表现不佳,因此在此之后立即重试并没有多大帮助。

但是我们通过重新运行 testNG-failed.xml 来重试失败的测试用例,这些用例通过了。目前,我们正在重新运行 testNG-failed.xml,但它为我们创建了 2 个报告和许多其他问题。我们是否可以通过 RetryAnalyzer 或 testNG 中的任何其他方式在不重新运行 testNG-failed.xml 的情况下实现类似的功能?

最佳答案

您可以创建 suiteListener,在测试套件运行后显示失败的测试用例,如下所示,以获取所有上下文的所有失败测试用例

public class suiteListener implements ISuiteListener {


@Override
public void onStart(ISuite suite) {

}

@Override
public void onFinish(ISuite suite) {

System.out.println("suite finished");
final Map<java.lang.String,ISuiteResult> res = suite.getResults()
for (ISuiteResult r : res.values()) {
context = r.getTestContext() ;
Iterator<ITestResult> failedTestCases =context.getFailedTests().getAllResults().iterator();
while (failedTestCases.hasNext()) {
System.out.println("failedTestCases...");
ITestResult failedTestCase = failedTestCases.next();
ITestNGMethod method = failedTestCase.getMethod();
java.lang.String testName = failedTestCase.getName();

System.out.println("failed method.."+ method);
System.out.println("failed testName.."+ testName);
}
}

并将监听器附加到testng.xml文件

<listeners>
<listener class-name ="firsttestngpackage.suiteListener" />
</listeners>

然后你可以简单地利用this通过创建虚拟类以编程方式运行测试的方法

IAlterSuiteListener 像这样修改套件并在您的 testng.xml

中添加监听器
import org.testng.IAlterSuiteListener;
import org.testng.xml.XmlPackage;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

import java.util.Collections;
import java.util.List;

public class SimpleSuiteAlterer implements IAlterSuiteListener {
@Override
public void alter(List suites) {
XmlSuite suite = suites.get(0);
XmlTest xmlTest = new XmlTest(suite);
xmlTest.setName("test123");

XmlClass xmlClass = new XmlClass("yourClass");
List<XmlInclude> includeMethods = new ArrayList<>();
includeMethods.add(new XmlInclude("your_method1"));
includeMethods.add(new XmlInclude("your_method2"));

//add more methods dynamically from your other listener

xmlClass.setIncludeMethods(includeMethods);
xmlTest.setXmlClasses(classes) ;
}
}

关于testing - TestNG - 如何在套件完成后重新运行失败的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com