testng框架浅析--dataProvider
testng框架常用于标注测试类,完成测试类数据之间的配置,举例简单介绍下dataProvider
public class testte { @DataProvider(name="user") public Object[][] provider(){ return new Object[][]{new Object[]{"1","2"},{"3","4"}}; } @Test(dataProvider ="user" ) public void test(String param1,String param2) { System.out.println("param1:"+param1+",param2:"+param2); } }或(DataProvider中name默认选取的是方法名) public class testte { @DataProvider public Object[][] provider(){ return new Object[][]{new Object[]{"1","2"},{"3","4"}}; } @Test(dataProvider ="provider" ) public void test(String param1,String param2) { System.out.println("param1:"+param1+",param2:"+param2); } }运行结果如下: [TestNG] Running: C:\Users\58\AppData\Local\Temp\testng-eclipse--595844788\testng-customsuite.xml param1:1,param2:2 param1:3,param2:4 PASSED: test("1", "2") PASSED: test("3", "4") 该例中,provider方法做数据驱动,返回二维数组(即为n组测试数据)test方法使用provider提供的数据进行测试,通过返回结果,我们看到,数据已经被获取到
再来一例
public class BaseDataProvider { @DataProvider(name = "xml") public static Object [][] XmlData(Method xml){ if (xml.getName().equalsIgnoreCase("test1")){ return new BaseXMLData().getData("case","case.xml"); }else if(xml.getName().equalsIgnoreCase("test2")){ return new BaseXMLData().getData("case2","case.xml"); } return new Object [][]{}; } }BaseXMLData().getData();该方法用于读取xml文件,获取各个节点的数据,返回一个二维数据,作为数据源,不做详述
public class test { @Test(dataProvider ="xml",dataProviderClass = BaseDataProvider.class ) public void test1(String param1,String param2) { System.out.println("param1:"+param1+",param2:"+param2); } } 该例中,BaseDataProvider类作为一个数据驱动类,单独抽离出来,再关联xml等其他格式数据源,整体作为数据驱动,test类中通过配置@Test参数,获取到测试数据
注意:这种方式,数据源中参数类型和个数要与测试类中的测试方法的参数类型和个数要保持一致
