在TestNG中获取运行时的套件名称

pav*_*aju 3 testng

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

听众课程:

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);
}

 }
Run Code Online (Sandbox Code Playgroud)

测试类:

    @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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Testng xml:

<suite name="tables" >
<test name="vendor" >
    <classes>
        <class name="Practise" ></class>
    </classes>
</test>
Run Code Online (Sandbox Code Playgroud)

代码完美无缺,直到我parallel="tests"在套件中指定属性:

<suite name="tables" parallel="tests" >
Run Code Online (Sandbox Code Playgroud)

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

Ced*_*ust 13

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

@Test
public void f(ITestContext ctx) {
  String suiteName = ctx.getCurrentXmlTest().getXmlSuite().getName();
Run Code Online (Sandbox Code Playgroud)