2010-08-18 51 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

相关问题