2010-08-18 50 views

回答

1

如果帶有@DataProvider批註的方法接受java.lang.reflect.Method作爲第一個參數,則TestNG將傳遞當前正在執行的測試方法作爲參數。例如

@Test(dataprovider="dp1") 
public void test1(String str){ 
//test here 
} 

@DataProvider(name="dp1") 
public Object [][](Method testName){ 
// testName will be the calling method 
// testName.getName(); == "test1" 
return new Object[][]{new Object[]{"Cedric"}}; 
} 

利用這一點,可以創建用於每個測試方法的片材,並將其命名一樣的方法名稱。然後您的數據提供者可以查找您的工作表,然後返回所需的許多參數。

+0

我得到了這個工作。 – TestUser 2010-09-09 12:52:17

1

當然,只要有你的數據提供程序讀取所有的Excel電子表格,將它們組合成一個對象[ ] []並返回該對象。

+0

但我想運行例如我的數據提供者是所述測試而採取表名稱: - @dataProvider(名稱= 「DP」) 公共對象[] [] createData1()拋出異常 { \t Object [] [] retObjArr = datacreate.getTableArray(path,tablename,sheetname); return(retObjArr); } 和我有兩個測試方法 @Test(數據提供程序= 「DP」) 公共無效testAddUser(字符串username,字符串位置) { // }和 公共無效testDeleteUser(INT userid,字符串用戶名) { // } 因此,我希望數據在運行測試時被採用不同的Excel表格。 請讓我知道我該如何做到這一點。 – TestUser 2010-08-18 08:52:16

+0

讓你的數據提供者返回一個{三個參數}的數組,你的每個測試方法需要三個參數,它只使用它需要的兩個參數。 – 2010-08-18 22:02:12

+0

仍然無法做到。 我想它在調用測試方法之前需要表單名稱,並且我在測試方法內提供表單名稱。 是否有任何方式我可以寫數據提供者,如: - 公共對象[] [] createData1(字符串SHEETNAME)拋出異常 { \t對象[] [] = retObjArr datacreate.getTableArray(路徑,表名, SHEETNAME); return(retObjArr); } 和測試方法是這樣的: - @Test(數據提供程序= 「DP」, 「工作表Sheet1」) 公共無效testAddUser(INT userid,字符串用戶名) – TestUser 2010-08-19 04:28:39

相關問題