學習使用TestNG進行數據驅動測試


一、數據驅動測試的應用場景
    在實際的測試工作中,我們經常會遇到如此場景:同樣的測試操作步驟,由於多組不同的輸入數據,需要執行多次測試操作。在自動化測試用例中,針對這種情況,我們可以使用TestNG中的DataProvider注解來輕松實現這種操作。
 
二、TestNG中DataProvider的基礎使用方法
    可以用一個有着@DataProvider注解的方法作為提供測試數據的容器。同時在對應的測試執行方法的@Test注解中,注明測試數據的來源,可以見代碼示例:
 
 1 public class TestDataDriven {
 2  
 3  
 4     @DataProvider(name="testData")  //在DataProvider注解中為dataprovider命名
 5     public Object[][] dataProvider(){
 6         return new Object[][]{{1,2},{2,3},{3,4}};
 7     }
 8  
 9     @Test(dataProvider="testData")//在Test注解中指定dataProvider獲取數據的來源
10     public void testDataDriven(int a, int b){
11         System.out.println("this is : "+(a+b));
12     }
13  
14 }
15  
16 public class TestDataDriven {
17  
18  
19     @DataProvider
20     public Object[][] dataProvider(){
21         return new Object[][]{{1,2},{2,3},{3,4}};
22     }
23  
24     @Test(dataProvider="dataProvider")
25     public void testDataDriven(int a, int b){
26         System.out.println("this is : "+(a+b));
27     }
28  
29 }

 

 
把測試執行方法與數據提供方法進行對應的方式有兩種: 
1、在數據提供方法的@DataProvider注解中指定name,如 @DataProvider(name="testData"),然后在對應的測試執行方法的@Test注解中填寫dataProvider的來源時,指定@DataProvider注解中的name,如 @Test(dataProvider="testData")
2、不在數據提供方法的@DataProvider注解中指定name,在對應的測試執行方法的@Test注解中填寫dataProvider的來源時,直接填寫數據提供的方法名稱。
 
 
三、將數據提供方法在一個單獨的類中進行存放   
  在實際的工作中,我們發現將數據提供方法和測試執行方法放在同一個類中,對代碼的可讀性、維護性都會帶來負面的影響。因此可以專門建立一個類來作為存放數據提供方法的容器。同時在對應的測試執行方法的@Test注解中填寫dataProvider的來源時,加上對數據提供類名的描述。代碼如下:
 
           
 1 import org.testng.annotations.DataProvider;
 2  
 3 public class TestDataProvider { 4 5  @DataProvider 6 public static Object[][] DataMethodNoName(){ 7 return new Object[][]{ 8 {"data with no name 1"}, 9 {"data with no name 2"}, 10 {"data with no name 3"} 11  }; 12  } 13 14 15 @DataProvider(name = "datamethodwithname") 16 public static Object[][] DataMethodWithName(){ 17 return new Object[][]{ 18 {"data with name 1"}, 19 {"data with name 2"}, 20 {"data with name 3"} 21  }; 22  } 23 24 }
 
同時在對應的測試執行方法的@Test注解中填寫dataProvider的來源時,加上對數據提供類名的描述,
dataProviderClass=com.testnglearn.TestDataProvider.class
。代碼如下:
1 @Test(dataProvider="datamethodwithname",dataProviderClass=com.testnglearn.TestDataProvider.class)
2 
3     public void testDataDriven_1(String a){
4         System.out.println("this is : "+a);
5     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM