通常情況下,圍繞着一個被測接口,根據邊界值、等價類等測試方法,我們會涉及多條用例,使用不同的數據來進行測試,此時我們是否需要重複的寫很多測試代碼來實現這種場景下的測試呢?
答案是否定的。TestNG 提供了參數化的特性,允許使用不同的值重複運行同一個測試方法。
TestNG支持兩種不同的方式將參數直接傳遞給測試方法:
- 使用 @Parameters註解,需結合 testng.xml使用。
- 使用 @DataProvider註解。
本文中主要介紹常用的 @DataProvider註解方式,將參數傳遞給@Test方法。
簡單的@DataProvider示例我們創建一個簡單的@DataProvider示例,傳遞一個int 參數。
import org.testng.Assert;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;public class TestDemo { @Test(dataProvider = "testOracleProvideData") public void testOracle(int actual,int expect) { System.out.println("Run testOracle" + " Parameters:" + actual +","+ expect); Assert.assertEquals(actual , expect); } @DataProvider(name = "testOracleProvideData") public Object[][] provideData() { return new Object[][] { {9527,9527}, {9528,9528}, {9526,9526} }; }}
執行示例 測試類代碼,運行結果如下:
Run testOracle Parameters:9527,9527Run testOracle Parameters:9528,9528Run testOracle Parameters:9526,9526===============================================Default SuiteTotal tests run: 3, Failures: 0, Skips: 0===============================================