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()
返回 fromXmlpublic 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);
}}
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- Docker应用:容器间通信与Mariadb数据库主从复制