- DataProvider如果是定义在当前测试类,直接使用;如果定义在外部类,当前类需要继承外部类获得对DataProvider的使用
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Object[][]返回的是一个二维数组,数组里一维元素里面包含的元素是什么类型,@Test方法就用什么参数去接收
*
*/
public class DataPass {
@Test(dataProvider = "dataProvider1")
public void testArrayMethod1(String name,Integer age,String gender){
System.out.println(name+"\t"+age+"\t"+gender);
}
/**
*
* output :
* Hello
* world
*/
@Test(dataProvider = "dataProvider2")
public void testArrayMethod2(String s){
System.out.println(s);
}
@Test(dataProvider = "dataProvider3")
public void testArrayMethod3(Map<String,String> map){
for(Map.Entry<String,String> entry:map.entrySet()){
String key= entry.getKey();
String value=entry.getValue();
System.out.println(key+"="+value);
}
}
/**
*
* Array->Object[][]
*/
@DataProvider(name="dataProvider1")
public Object[][] createDataProvider1(){
Object[][] object=new Object[][]{
{"zhangsan",20,"man"},{"Lisi",15,"woman"}
};
return object;
}
/**
* list<String>->Object[][]
*/
@DataProvider(name="dataProvider2")
public Object[][] createDataProvider2(){
List<String> list=new ArrayList<>();
list.add("Hello");
list.add("world");
Object[][] object=new Object[list.size()][];
for (int i=0;i<list.size();i++){
object[i]= new Object[]{list.get(i)};
}
return object;
}
/**
* List<Map>->Object
*/
@DataProvider(name="dataProvider3")
public Object[][] createDataProvider3(){
Map<String,String> map1=new HashMap<>();
map1.put("Zhangsan","student");
map1.put("Lisi","teacher");
map1.put("Hanmeimei","doctor");
Map<String,String> map2=new HashMap<>();
map2.put("Zhangsan","1111");
map2.put("Lisi","2222");
map2.put("Hanmeimei","3333");
List<Map<String,String>> list=new ArrayList<>();
list.add(map1);
list.add(map2);
Object[][] object=new Object[list.size()][];
for (int i=0;i<list.size();i++){
object[i]=new Object[]{list.get(i)};
}
return object;
}
}