数据驱动
数据驱动,数据的不同引起测试结果的不同。
数据驱动在web自动化里面什么时候去用?
- 数据不同
- 测试步骤一样
- 断言的方式也一致
DataProvider的使用
- TestNG Dataprovider数据提供者,维护我们所有测试的数据;
@DataProvider(name = "usernames")
public Object[][] getDatas(){
Object[][] datas = {
{"张三"},
{"李四"},
{"王五"},
};
return datas;
}
@DataProvider(name = "userinfo")
public Object[][] getUserDatas(){
Object[][] datas = {
{"张三", 30},
{"李四", 28},
{"王五", 16},
};
return datas;
}
- Test注解的属性/参数dataProvider指向对应的数据提供者方法;
- 测试方法里面通过形参来接受。
@Test(dataProvider = "usernames")
public void test01(String name){
System.out.println(name);
}
@Test(dataProvider = "userinfo")
public void test02(String name, int age){
System.out.println("name:" + name + "--->age:" + age);
}
完整代码块如下:
package com.lemon.day02.tests;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* @author xiaocong
* @date 2021/4/22 0022 - 15:32
* testNG数据驱动
* (1)DataProvider数据提供者
* (2)测试方法通过参数接收数据
*/
public class DataProviderTest {
//(1)
@DataProvider(name = "usernames")
public Object[][] getDatas(){
Object[][] datas = {
{"张三"},
{"李四"},
{"王五"},
};
return datas;
}
@Test(dataProvider = "usernames")
public void test01(String name){
System.out.println(name);
}
@DataProvider(name = "userinfo")
public Object[][] getUserDatas(){
Object[][] datas = {
{"张三", 30},
{"李四", 28},
{"王五", 16},
};
return datas;
}
@Test(dataProvider = "userinfo")
public void test02(String name, int age){
System.out.println("name:" + name + "--->age:" + age);
}
}
优点
- 节省代码量;
- 使得测试数据可以得到统一管理。