簡體   English   中英

TestNG - 如何將變量的值作為 dataProvider 名稱傳遞?

[英]TestNG - How to pass variable's value as dataProvider name?

我有一個字符串變量whichSet可以保存 3 個值“prd”、“stg”和“int”。 在測試中,我想將值作為 dataProvider 傳遞,如下所示:

@Test(enabled = true, dataProvider = whichSet, dataProviderClass = TestDataProvider.class)

但我有以下錯誤:

The value for annotation attribute Test.dataProvider must be a constant expression

我已經將 3 個提供者定義為:

@DataProvider(name="stg")
@DataProvider(name="prd")
@DataProvider(name="int")

由於我正在從另一個 class(不在測試類中)讀取數據提供者,所以我無法根據某些測試條件將值傳遞給該 class。 無論如何,我可以讓dataProvider = whichSet工作? 謝謝

基本上,您正在嘗試向DataProvider添加配置文件,應該有一個外部參數來驅動它。 我解決這個問題的方法是使用 JVM 選項。

public class Testng {

    @DataProvider(name = "data-provider")
    public Object[][] dataProviderMethod() {
        switch(System.getProperty("env")) {
            case "int":
                return new Object[][] { { "int data one" }, { "data two" } };
            case "stg":
                return new Object[][] { { "stage data one" }, { "data two" } };
            case "prod":
                return new Object[][] { { "production data one" }, { "data two" } };
            default:
                return new Object[][] { { "int data one" }, { "data two" } };
        }
    }

    @Test(enabled = true, dataProvider = "data-provider", dataProviderClass = Testng.class)
    public void test(String data) {
        System.out.println(data);
    }

}

並使用 JVM 系統屬性運行您的測試。

Eclipse: 在此處輸入圖像描述

命令行界面

java -Denv=prod -cp ".:../lib/*" org.testng.TestNG testng.xml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM