[英]Selenium Webdriver test cases - Test cases not executing in an order
[英]Overloading Selenium WebDriver Test Cases with DataProvider
就像標題所說的那樣,到目前為止,我一直在嘗試重載Selenium測試用例,但沒有成功。 這是我的代碼:
public class testClass {
@Test(dataProvider="testProvider")
public void testFunc(String value) throws Exception{
System.out.println("The only value provided was a string");
}
@Test(dataProvider="testProvider")
public void testFunc(String value, int myValue) throws Exception{
System.out.println("The two values provided are a string and an integer");
}
@DataProvider(name="testProvider")
public static Object[][] testProvider(){
return new Object[][]{ {"someString"}, {"someString", 5} };
}
}
當我運行此代碼時,第一個測試用例(僅通過“ someString”通過時)成功,但是第二個測試用例(當同時通過“ someString”和5時)失敗,並顯示以下消息:
org.testng.TestNGException:數據提供者試圖傳遞2個參數,但方法[已刪除項目結構] .testFunc需要1個
我的想法已經用完了...這完全有可能根本無法完成,但是這似乎是一個非常基本的問題,我必須丟失一些東西!
謝謝你的幫助!
我認為在這里您可以使用reflect.Method概念。 我已經復制了TestNG文檔,有關更多詳細信息,請參閱http://testng.org/doc/documentation-main.html#parameters-dataproviders
如果您聲明@DataProvider以java.lang.reflect.Method作為第一個參數,則TestNG將通過該第一個參數的當前測試方法。 當多個測試方法使用相同的@DataProvider且您希望它根據為其提供數據的測試方法返回不同的值時,此功能特別有用。 例如,以下代碼在其@DataProvider中打印測試方法的名稱:
@DataProvider(名稱=“ dp”)
public Object [] [] createData(Method m){
的System.out.println(m.getName()); //打印測試方法名稱
返回new Object [] [] {new Object [] {“ Cedric”}}; }
@Test(dataProvider =“ dp”)
公共無效test1(String s){}
@Test(dataProvider =“ dp”)
公共無效test2(String s){}
並因此顯示:
查看原圖?
TEST1
TEST2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.