一、当我们的同一个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基础开始。

欢迎关注,转载请注明来源。

posted on 2019-09-11 16:11  时光以北暮南城  阅读(402)  评论(0编辑  收藏  举报