一、DataProvider注解参数
DataProvider是TestNG测试框架中一个非常实用的注解。在TestNG中,一个测试方法或测试类可以指定一个或多个参数,以用于测试数据的输入或输出。DataProvider可以用来提供测试方法中所需要的数据,它具有以下几个参数:
@DataProvider(name = "testData") public Object[][] provideTestData() { return new Object[][]{{"data1", 1}, {"data2", 2}, {"data3", 3}}; }
- name:DataProvider的名称,这个名称用于指定需要使用哪个DataProvider来提供测试数据。
- parallel:表示你的测试方法是否支持并发执行,默认为false。
- indices:表示你要使用的二维数组的哪一行,只有在DataProvider返回的是一个二维数组时才有用。
- dataProviderClass:表示你需要使用哪个类来提供测试数据。
二、DataProvider注解
DataProvider是一个注解,通过该注解标识的方法可作为数据源供其它测试方法使用。DataProvider定义在一个类中,供该类中的所有测试方法使用,也可以定义在testng.xml文件中,供整个测试套件使用。
@Test(dataProvider = "testData", groups = {"group1"}) public void testMethod(String input, int expectedOutput) { // TODO: Test code goes here }
三、DataProvider怎么读
DataProvider提供测试数据的方法应该满足以下条件:
- 必须返回一个Object[][]类型的二维对象数组,其中第一维代表测试方法的调用次数,第二维代表测试方法所需的参数个数。
- 如果测试方法只有一个参数,并且这个参数的类型是Object[]或者Iterator
- 如果测试方法有多个参数,那么DataProvider应该返回一个Object[][]类型的二维对象数组。在测试方法调用时,TestNG将会逐个注入数组元素到测试方法的参数中。
@DataProvider(name = "testData") public Object[][] provideTestData() { return new Object[][]{{"data1", 1}, {"data2", 2}, {"data3", 3}}; }
四、DataProvider只能传二维数组吗
在DataProvider中,我们可以使用Iterator进行数据的提供,这样可以避免在DataProvider方法中提前定义好二维数组的大小。另外,DataProvider除了可以传入二维数组外,还可以传入Object[]、Iterable
@DataProvider(name = "testData") public IteratorprovideTestData() { List list = new ArrayList (); list.add(new Object[]{"data1", 1}); list.add(new Object[]{"data2", 2}); list.add(new Object[]{"data3", 3}); return list.iterator(); }
五、DataProvider传入Map
在DataProvider方法中返回一个Object[]或者Object[][]数组是比较常见的做法,但并不总是这样,有时候我们需要使用Map作为参数传递。此时可以在方法中直接返回一个Map对象数组或者Iterator,如下所示:
@DataProvider(name = "testData") public IteratorproviderTestData() { List list = new ArrayList (); Map map1 = new HashMap(); map1.put("data1", 1); map1.put("data2", 2); list.add(new Object[]{map1}); Map map2 = new HashMap(); map2.put("data3", 3); map2.put("data4", 4); list.add(new Object[]{map2}); return list.iterator(); }
六、DataProvider TestNG
DataProvider是TestNG测试框架提供的一个很强大的功能,通过它可以方便地生成大量测试数据进行测试。它不仅支持二维数组,还支持Object[]、Iterable
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/287041.html