gpt4 book ai didi

testng - 在 TestNG 运行时获取套件名称

转载 作者:行者123 更新时间:2023-12-01 07:42:17 27 4
gpt4 key购买 nike

如何在测试用例的运行时获取当前正在运行的套件名称?我正在使用下面显示的代码来获取当前套件名称。

监听类:

public class SuiteListener implements ISuiteListener{

private static ThreadLocal<ISuite> ACCESS = new ThreadLocal<ISuite>();

public static ISuite getAccess() {
return ACCESS.get();
}

@Override
public void onFinish(ISuite suite) {
ACCESS.set(null);
}

@Override
public void onStart(ISuite arg0) {
ACCESS.set(arg0);
}

}

测试类:
    @Listeners({ SuiteListener.class })
public class Practise {

@DataProvider(name = "getXlsPath")
public Object[][] createData() throws Exception {
String [][] testCasesPaths=null;
ISuite suiteListner = SuiteListener.getAccess();
String runningSuite=suiteListner.getName();
System.out.println(runningSuite);
testCasesPaths[0][0]="1.xls";
testCasesPaths[1][0]="2.xls";
return testCasesPaths;
}

@Test(dataProvider="getXlsPath")
public void test2(String xlsPath){
System.out.println(xlsPath);
}
}

测试xml:
<suite name="tables" >
<test name="vendor" >
<classes>
<class name="Practise" ></class>
</classes>
</test>

在我指定 parallel="tests" 之前,代码运行良好套件中的属性:
<suite name="tables" parallel="tests" >

在这种情况下,我无法获得套件名称——它没有执行。
有人可以帮助我获得套件名称吗?

最佳答案

您可以从 ITestContext 访问 Xml 文件和当前 Xml 测试。 ,可以在测试方法中注入(inject):

@Test
public void f(ITestContext ctx) {
String suiteName = ctx.getCurrentXmlTest().getXmlSuite().getName();

关于testng - 在 TestNG 运行时获取套件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199106/

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