Testng 同一数据提供程序的不同excel工作表

Testng 同一数据提供程序的不同excel工作表,testng,dataprovider,Testng,Dataprovider,是否可以为不同的测试方法使用不同的excel表格,在testng中共享相同的数据提供程序?当然,只需让数据提供程序读取所有excel电子表格,并将它们合并到一个对象中[][]并返回该对象。如果带有@DataProvider注释的方法接受java.lang.reflect.method作为第一个参数,TestNG将传递当前正在执行的测试方法作为参数。比如说 @Test(dataprovider="dp1") public void test1(String str){ //test here }

是否可以为不同的测试方法使用不同的excel表格,在testng中共享相同的数据提供程序?当然,只需让数据提供程序读取所有excel电子表格,并将它们合并到一个对象中[][]并返回该对象。

如果带有@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"}};
}

使用此功能,可以为每个测试方法创建一个工作表,并将其命名为与方法名称相同的名称。然后,您的数据提供程序可以查找您的工作表,并返回所需的任意多个参数。

但我希望在运行测试时使用工作表名称。例如,我的数据提供程序是:-@dataprovider(name=“DP”)public Object[][]createData1()引发异常{Object[][]retObjArr=datacreate.getTableArray(path,tablename,sheetname);return(retObjArr);}我有两个测试方法@test(dataProvider=“DP”)public void testAddUser(String username,String location){/}和public void testDeleteUser(int userid,String username){/},所以我希望在运行测试时,数据被获取到不同的excel表中。请让我知道如何实现这一点。让您的数据提供程序返回一个{three parameters}数组,您的每个测试方法接受三个参数,并且只使用它需要的两个参数。仍然无法执行此操作。我猜它在调用测试方法之前需要工作表名称,我在testmethod中提供工作表名称。是否有任何方法可以编写如下数据提供程序:-public Object[][]createData1(String sheetname)抛出异常{Object[][]retObjArr=datacreate.getTableArray(path,tablename,sheetname);return(retObjArr);}以及类似以下内容的测试方法:-@test(dataProvider=“DP”,“Sheet1”)public void testAddUser(int userid,String username)这里的代码越来越难读了,您介意将您的问题发布到testng用户列表吗?这样会更容易。