一、当我们的同一个test有多套数据需要进行测试,那么我们就需要用到--》DataProviders
1 package testclasses1; 2 3 import org.testng.annotations.DataProvider; 4 import org.testng.annotations.Test; 5 6 public class TestNG_DataProviders { 7 8 /** 9 * 场景:我们需要使用3组数据对同一个test方法进行测试。 10 * 解决思路: 11 * 1、如果我们写3个重复的test。那么就会造成代码冗余,为了提高代码的复用性,我们可以使用testng中的@DataProvider进行数据提供 12 * 2、首先我们需要写一个可以提高数据的方法,它时一个二维数组类型的,需要返回参数。 13 * 3、@DataProvider(name="inputs")给该方法加上备注,并命名为“inputs” 14 * 4、在测试方法testMethod1中引用数据,dataProvider名称必须和提供数据的方法注解名称一致 15 * */ 16 17 @DataProvider(name="inputs") 18 public Object[][] getData(){ 19 return new Object[][] { 20 {"苹果","红色"}, 21 {"西瓜","绿色"}, 22 {"桔子","黄色"}, 23 }; 24 } 25 26 @Test(dataProvider="inputs") 27 public void testMethod1(String input1,String input2) { 28 System.out.println("Input 1:"+input1); 29 System.out.println("Input 2:"+input2); 30 } 31 }
运行结果:
二、如果我们的一个类中有多个测试方法和提供数据的dataprovider,就会比较混乱,所以我们需要然将提供数据的方法和test类分离。
1、新建一个用于存放测试数据的类
1 package testclasses1; 2 3 import org.testng.annotations.DataProvider; 4 5 public class TestData { 6 7 @DataProvider(name="inputs") 8 public Object[][] getData(){ 9 return new Object[][] { 10 {"苹果","红色"}, 11 {"西瓜","绿色"}, 12 {"桔子","黄色"}, 13 }; 14 } 15 }
2、test类
package testclasses1; import org.testng.annotations.Test; public class TestNG_DataProviders { // dataProviderClass=TestData.class:用于引用专门存放测试数据的类,格式:dataProviderClass=测试数据类名.class @Test(dataProvider="inputs",dataProviderClass=TestData.class) public void testMethod1(String input1,String input2) { System.out.println("Input 1:"+input1); System.out.println("Input 2:"+input2); } }
3、运行结果:
如果有不明白的小伙伴可以私信问我,目前也建了qq、微信群,都是软件行业的小伙伴相互一起学习。
内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。
欢迎关注,转载请注明来源。