testng參數化方法:Parameters和DataProvider


  Parameters注解在測試方法上指定參數列表,然后在測試方法中聲明對應的形參,形參與參數列表一一對應,但名字可以不同,如下所示:

1 public class Test1 {
2     
3     @Parameters({"Name", "Age", "Hobby"})
4     @Test
5     public void test1(String name, int age, String hobby) {
6         System.out.println(name + " is " + age + " years old and likes " + hobby);
7     }
8 }

  然后在XML文件中通過<parameter>標簽對每個參數賦值,采用name-value對的形式:

 1 <suite name="suite1">
 2     <parameter name="Name" value="xiaoming" />
 3     <parameter name="Age" value="20" />
 4     <parameter name="Hobby" value="dajiangyou" />
 5 
 6     <test name="test1" verbose="2">
 7         <classes>
 8             <class name="sea.Test1" />
 9           </classes>    
10     </test>
11     
12 </suite>

  運行結果為:

xiaoming is 20 years old and likes dajiangyou
PASSED: test1("xiaoming", 20, "dajiangyou")

  Parameters一般用於比較簡單的參數,對於參數比較多、復雜或者需要從文件讀取的時候一般使用DataProvider注解。

  采用DataProvider時構造參數的方法必須返回Obiect[][],可以看着二維數組(當然也可存放一維數據)。

  使用時,首先定義一個DataProvider,通過name參數指定該測試數據的名字;

  然后在測試方法中,通過Test注解的dataProvider參數指定需要使用的測試數據名字,多個測試方法可以使用同一個dataProvider;

  最后在測試方法的形參列表中,定義與Obiect[][]的每一行數據一一對應的參數,該測試方法被執行時,有多少組參數就會被執行多少次。

  舉例如下,可以看到test2這個用例被執行了3次:

 1 public class Test1 {
 2     @DataProvider(name = "data1")
 3     public Object[][] createdata() {
 4         return new Object[][] {
 5             {"lilei", 20, "football"},
 6             {"hanmeimei", 18, "music"},
 7             {"wangnima", 25, "baozoumanhua"}
 8         };
 9     }
10 
11     @Test(dataProvider = "data1")
12     public void test2(String name, int age, String hobby) {
13         System.out.println(name + " is " + age + " years old and likes " + hobby);
14     }
15 }
lilei is 20 years old and likes football
hanmeimei is 18 years old and likes music
wangnima is 25 years old and likes baozoumanhua
PASSED: test2("lilei", 20, "football")
PASSED: test2("hanmeimei", 18, "music")
PASSED: test2("wangnima", 25, "baozoumanhua")

 


免責聲明!

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



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