TestNG的数据驱动DataProvider

【TestNG的数据驱动DataProvider】TestNg的数据驱动也是以注解的形式来表达的,使用的注解是 @DataProvider
来看个例子,我们要对一个加法函数做测试
一、通过数据源name属性指定数据源 1、@DataProvider中添加name属性,命名数据源的名称
2、在测试方法中要用到数据源,则要在@Test中加上dataProvider属性并指定其值,即name名称。

public class TestDataProvider { @DataProvider(name="dataSource001") public Object[][] dataProvider001(){ return new Object[][]{{1,2},{3,4}}; }@Test(dataProvider="dataSource001") public void testDemo001(int a, int b){ int sum = a + b; System.out.println(a+" + "+b+" = "+sum); } }

二、通过数据源的方法名指定数据源 如果不指定其name名称,则数据源的名称为该数据源的方法名
public class TestDataProvider {@DataProvider public Object[][] dataProvider002(){ return new Object[][]{{1,2},{3,4}}; }@Test(dataProvider="dataProvider002") public void testDemo002(int a, int b){ int sum = a + b; System.out.println(a+" + "+b+" = "+sum); } }

三、通过外部文件导入数据源 1、首先编写一个类型用于处理从xml或者excel文件中获取数据
注意:@DataProvider数据源的方法必须是static的
public class DataSource {@DataProvider public static Object[][] dataProviderXml(){ // 伪代码实现 return new Object[][]{{1,2},{3,4}}; }}

2、通过dataProviderClass指定数据源类名,dataProvider指定数据源方法来实现
public class TestData {@Test(dataProvider="dataProviderXml",dataProviderClass=DataSource.class) public void testDemo(int a, int b){ int sum = a + b; System.out.println(a+" + "+b+" = "+sum); } }

四、通过外部文件导入数据源进阶 伪代码实现从xml读取的数据源放入fromXml map中,从excel读取的数据源放入fromExcel map中
public class DataSource { public Map dataSource(){ Map dataMap = new HashMap(); Object[][] o1 = new Object[][]{{1,2},{3,4}}; dataMap.put("fromXml", o1); Object[][] o2 = new Object[][]{{5,6},{7,8}}; dataMap.put("fromExcel", o2); return dataMap; }}

测试方法引用时,通过参数Method来指定哪个测试方法对应哪个测试数据源
当 fromXml(int a, int b) 来请求数据源时,method.getName() 返回 fromXml
public class TestData {@DataProvider public Object[][] dataProvider(Method method){ DataSource data = https://www.it610.com/article/new DataSource(); Object[][] obj = data.dataSource().get(method.getName()); return obj; }@Test(dataProvider="dataProvider") public void fromXml(int a, int b){ int sum = a + b; System.out.println(a+" + "+b+" = "+sum); }@Test(dataProvider="dataProvider") public void fromExcel(int a, int b){ int sum = a + b; System.out.println(a+" + "+b+" = "+sum); }}

    推荐阅读