[英]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 系統屬性運行您的測試。
命令行界面
java -Denv=prod -cp ".:../lib/*" org.testng.TestNG testng.xml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.