将数组从dataprovider返回到@Test方法

时间:2015-04-17 12:05:44

标签: java selenium testng

我用TestNG创建了一个Selenium框架。在这个@Dataprovider中包含一组从excel读取数据并将arrayform中的值返回给@test的代码。

@Test(dataProvider="createData1")
private  void login (String data, String data1) throws IOException{}

@DataProvider
public static String [][] createData1() throws IOException{

     String Scenarioname=new Object(){}.getClass().getEnclosingClass().getSimpleName();
     return  xls.readvalues(Scenarioname,"testdata");

}

由于登录测试用例有两个输入,因此方法Login有两个属性。 同样,如果寄存器测试用例有5个输入,那么寄存器方法将有5个属性。 但我想以某种方式创建一种标准方式,以便在从@dataprovider返回数组时。然后@test方法应该动态读取值,而不是我提到的每个方法的属性数。

1 个答案:

答案 0 :(得分:2)

您的@DataProvider可以返回Object[][]而不是String[][]。因此,您可以在第一位返回方案规范,在第二位返回包含用户数据的Object。类似的东西:

return new Object[][] {
    {"My Scenario1", new MyUserDataObject("name1", "password1", "male")}, 
    {"My Scenario2", new MyUserDataObject("name2", "password2", "female")}
};

和测试方法签名将是: login(String scenarioName, MyUserDataObject userData)

然后,test可以从userData参数中读取所有必需数据。

修改

参数化测试得到简单的值作为参数,因此没有userData [0] [0](http://testng.org/doc/documentation-main.html#parameters-dataproviders

@BeforeMethod不支持TestNG中的@DataProviders(https://groups.google.com/forum/#!topic/testng-users/3Kny3qTVdmg