gpt4 book ai didi

java - 有没有办法使用 TestNG XML 文件通过某些选定的方法多次运行 1 个测试组?

转载 作者:行者123 更新时间:2023-12-02 02:46:46 37 4
gpt4 key购买 nike

我有一个名为“基础应用程序组”的组,其中包含 3 种测试方法:

Test a(groups = "base application group"), 
Test b(groups = "base application group") AND
Test c(groups = "base application group").

现在,假设我只想运行 Test a() 并希望从组中排除其余方法。我知道如何在 XML 文件中执行此操作。现在真正的问题是,如果 XML 文件中有 10 个类,并且该组应该执行 10 次,那么如何使用 XML 文件中的每个类运行该组?

到目前为止,我已经尝试在类级别使用包含和排除标签来执行此操作,但我不想在 XML 文件中执行 10 次。我也尝试过标签和元组,但这并没有给我想要的输出。

这是我的 xml 代码 atm:

<suite name ="Footer Suite" >
<test name ="Footer Tests" verbose ="2" >
<classes>
<class name ="it.org.techtime.jira.easysso.seleniumtests.footertests.MainAdminScreenTests">
<methods>
<exclude name ="Test b"/>
<exclude name ="Test c"/>
</methods>
</class>
<class name ="it.org.techtime.jira.easysso.seleniumtests.footertests.MainAdminScreenTests">
<methods>
<exclude name ="Test b"/>
<exclude name ="Test c"/>
</methods>
</class>
</classes>
</test>

我希望“基本应用程序组”运行 10 次,并且只希望 Test a() 从该组运行。不要忘记我想从 XML 文件实现这一点。

最佳答案

您无法使用 TestNG 开箱即用地执行此操作。基本上没有任何机制可以迭代属于一个组的一堆测试,n次。

执行此操作的唯一方法是手动复制 <test>标签,正如您所指出的,这是一个手动过程,并且每次都需要更改和 checkin 套件 xml。

总而言之,TestNG 仍然允许您通过执行以下操作来做到这一点。

  1. 确保您依赖于 TestNG 7.0.0-beta7 (截至今天最新)
  2. 构建 org.testng.IAlterSuiteListener 的实现使用它,您可以以编程方式更改套件文件并添加/删除/更新其中的任何内容。

这是一个执行您所要求的操作的监听器示例。

import java.util.List;
import org.testng.IAlterSuiteListener;
import org.testng.ITestContext;
import org.testng.TestListenerAdapter;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlGroups;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;

public class MultiRunner extends TestListenerAdapter implements IAlterSuiteListener {

@Override
public void alter(List<XmlSuite> suites) {
XmlSuite xmlsuite = suites.get(0);
XmlTest xmltest = xmlsuite.getTests().get(0);
XmlGroups xmlgroups = xmltest.getXmlGroups();
List<XmlClass> xmlclasses = xmltest.getClasses();
int iteration = Integer.parseInt(System.getProperty("iterations", "2"));
String name = xmltest.getName();
for (int i=1; i<= iteration; i++) {
XmlTest test = new XmlTest(xmlsuite);
test.setName(name + "_" + i);
test.setGroups(xmlgroups);
test.setXmlClasses(xmlclasses);
}
}

@Override
public void onStart(ITestContext testContext) {
System.err.println("Commencing execution of [" + testContext.getName() + "]");
}
}

关于java - 有没有办法使用 TestNG XML 文件通过某些选定的方法多次运行 1 个测试组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138731/

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