一、DataProvider註解參數
DataProvider是TestNG測試框架中一個非常實用的註解。在TestNG中,一個測試方法或測試類可以指定一個或多個參數,以用於測試數據的輸入或輸出。DataProvider可以用來提供測試方法中所需要的數據,它具有以下幾個參數:
@DataProvider(name = "testData") public Object[][] provideTestData() { return new Object[][]{{"data1", 1}, {"data2", 2}, {"data3", 3}}; }
- name:DataProvider的名稱,這個名稱用於指定需要使用哪個DataProvider來提供測試數據。
- parallel:表示你的測試方法是否支持並發執行,默認為false。
- indices:表示你要使用的二維數組的哪一行,只有在DataProvider返回的是一個二維數組時才有用。
- dataProviderClass:表示你需要使用哪個類來提供測試數據。
二、DataProvider註解
DataProvider是一個註解,通過該註解標識的方法可作為數據源供其它測試方法使用。DataProvider定義在一個類中,供該類中的所有測試方法使用,也可以定義在testng.xml文件中,供整個測試套件使用。
@Test(dataProvider = "testData", groups = {"group1"}) public void testMethod(String input, int expectedOutput) { // TODO: Test code goes here }
三、DataProvider怎麼讀
DataProvider提供測試數據的方法應該滿足以下條件:
- 必須返回一個Object[][]類型的二維對象數組,其中第一維代表測試方法的調用次數,第二維代表測試方法所需的參數個數。
- 如果測試方法只有一個參數,並且這個參數的類型是Object[]或者Iterator
- 如果測試方法有多個參數,那麼DataProvider應該返回一個Object[][]類型的二維對象數組。在測試方法調用時,TestNG將會逐個注入數組元素到測試方法的參數中。
@DataProvider(name = "testData") public Object[][] provideTestData() { return new Object[][]{{"data1", 1}, {"data2", 2}, {"data3", 3}}; }
四、DataProvider只能傳二維數組嗎
在DataProvider中,我們可以使用Iterator進行數據的提供,這樣可以避免在DataProvider方法中提前定義好二維數組的大小。另外,DataProvider除了可以傳入二維數組外,還可以傳入Object[]、Iterable
@DataProvider(name = "testData") public IteratorprovideTestData() { List list = new ArrayList (); list.add(new Object[]{"data1", 1}); list.add(new Object[]{"data2", 2}); list.add(new Object[]{"data3", 3}); return list.iterator(); }
五、DataProvider傳入Map
在DataProvider方法中返回一個Object[]或者Object[][]數組是比較常見的做法,但並不總是這樣,有時候我們需要使用Map作為參數傳遞。此時可以在方法中直接返回一個Map對象數組或者Iterator,如下所示:
@DataProvider(name = "testData") public IteratorproviderTestData() { List list = new ArrayList (); Map map1 = new HashMap(); map1.put("data1", 1); map1.put("data2", 2); list.add(new Object[]{map1}); Map map2 = new HashMap(); map2.put("data3", 3); map2.put("data4", 4); list.add(new Object[]{map2}); return list.iterator(); }
六、DataProvider TestNG
DataProvider是TestNG測試框架提供的一個很強大的功能,通過它可以方便地生成大量測試數據進行測試。它不僅支持二維數組,還支持Object[]、Iterable
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/287041.html