我可能是可怕的錯誤(如果我是,我敢肯定,別人會給你一個更好的解決方案);但我不認爲你可以使用testNG Guruswamy實現你的目標。 我剛剛測試了使用這種數據提供程序
@DataProvider(name = "login8users")
public Object[][] login8usersForStackOverflow() {
return new Object[][] {
{ "[email protected]", "pass" },
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
{ "[email protected]", "pass"},
};
}
而且路過一個叫瀏覽器從XML文件參數的嘗試。我注意到,當您在相同的@Test註釋下使用dataProvider和參數時;不管你是否會得到上面給出的錯誤,或者XML參數將被完全忽略(似乎dataProvider取代它們)。 然後這裏是測試方法:
@Test(dataProvider="login8users")
@Parameters({"browser"})
public void login8(String dataProvider1, String dataProvider2) {
System.out.println("Email from data provider is..: "+dataProvider1);
System.out.println("Pass from data provider is..: "+dataProvider2);
}
這裏是輸出:
[TestNG] Running:
C:\projects\test\currentTest.xml
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
===============================================
Regression
Total tests run: 8, Failures: 0, Skips: 0
===============================================
因此,你需要尋找替代的解決方案。其中一個可能是加載參數,(甚至可能在@BeforeClass中)將參數作爲全局變量傳遞給您的測試,以便您可以訪問它。所以這樣的解決方案如下:
public static String globalVarScope;
@BeforeClass
@Parameters({"xmlParam"})
public void initialSetup(String xmlParam) {
System.out.println("Parameter from XML is..: "+xmlParam);
globalVarScope= xmlParam;
}
@Test
public void useMeAnywhere() {
System.out.println("Hey, I passed the param earlier and I can use it anywhere now :) ..: "+globalVarScope);
}
@Test(dataProvider="login8users")
@Parameters({"browser"})
public void login8(String dataProvider1, String dataProvider2) {
System.out.println("Email from data provider is..: "+dataProvider1);
System.out.println("Pass from data provider is..: "+dataProvider2);
}
所以希望現在你可以實現你想要的結果,讓我知道如果你卡住了。以下是分別運行參數後的最終輸出:
[TestNG] Running:
C:\projects\test\currentTest.xml
Browser is..: ***chrome***
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
Email from data provider is..: [email protected]
Pass from data provider is..: pass
===============================================
Regression
Total tests run: 9, Failures: 0, Skips: 0
===============================================
祝您好運!
謝謝Xwris它幫助... –
沒問題Guruswamy,如果我對你有任何幫助,這是一種樂趣。如果您也可以提出答案(請點擊答案旁邊的向上箭頭),將不勝感激?只是爲了獲得這種道德上的滿足感 - 事先要感謝! :) –