5

テスト ケースの実行時に現在実行中のスイート名を取得するにはどうすればよいですか? 現在のスイート名を取得するために、以下に示すコードを使用しています。

リスナー クラス:

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" >

この場合、スイート名を取得できませんでした。実行されていません。スイート名を取得するために、誰かがこれについて私を助けることができますか?

4

5 に答える 5

14

から Xml ファイルと現在の Xml テストにアクセスできますITestContext。これらは、テスト メソッドに挿入できます。

@Test
public void f(ITestContext ctx) {
  String suiteName = ctx.getCurrentXmlTest().getXmlSuite().getName();
于 2012-08-30T16:11:41.960 に答える
1

ITestContext から読み取ることができます

public static String getSuiteName(ITestContext context){
    return context.getCurrentXmlTest().getSuite().getName();
}
于 2016-06-17T06:19:17.513 に答える
0

onStart() では、現在実行中のスイートのスイート名を取得できます。ロガーまたは sysout を使用して出力できます。

public void onStart(ISuite suite) {
    suite.getName();
}
于 2013-03-28T07:38:24.733 に答える
-1
public static String generateFileName (ITestResult result, ITestContext ctx)
{
    String suiteName = result.getTestClass().getName();
    //String suiteName = ctx.getCurrentXmlTest().getClasses().get(0).getName(); this is removed since the index after class was not getting updated to hold current test name
    String filename = "Script_" + suiteName + "_" + dateFormat.format(new Date());
    return filename;
}

これにより、複数のテスト実行がある場合に現在のクラス名が得られます。インデックスを更新する必要があるため、現在の ctx.getCurrentXmlTest().getClasses().get(0).getName()クラス名は表示されません。

于 2018-08-24T02:21:23.683 に答える