TestNG:在一个测试类中使用@DataProvider依次运行测试
許多Java開發人員和自動化測試工程師在他們的工作中都使用TestNG作為測試框架。 我也不例外。 這是一個顯而易見的選擇,因為TestNG提供了非常強大的工具集,使處理各種測試變得更加容易。 為了證明這一點,我將在本文中向您展示如何解決一項不平凡的任務。
問題
如何在單個類中以不同的數據集按特定順序運行測試? 好吧,好像我用一句話就暴露了這個問題。 但是,如果您要我以更嚴格的形式提出這句話,我將提供以下列表:
- 多種測試方法
- 一門考試
- 序列運行
- 每種測試方法都有不同的數據集
這里總結一下這個問題的抽象模式:
TestClass { firstTest(String testData) secondTest(String testData) thirdTest(String testData) }TestDataSets { “string 1″ “string 2″ }運行這些測試應得出以下結果:
firstTest(string 1) secondTest(string 1) thirdTest(string 1)firstTest(string 2) secondTest(string 2) thirdTest(string 2)在突出顯示并解釋了問題之后,我們可以繼續解決問題。
TestNG的實現
我將使用最簡化的代碼構造,但是您可以使用這種方法通過一些特定的邏輯對其進行自定義。
package kill.me.later;import static org.testng.Assert.assertTrue;import org.testng.annotations.Test;public class SomeTest {private int id = 0;private String account = "";public SomeTest(int id, String account) {this.id = id;this.account = account;}@Testpublic void firstTest() {System.out.println("Test #1 with data: "+id+". "+account);assertTrue(true);}@Testpublic void secondTest() {System.out.println("Test #2 with data: "+id+". "+account);assertTrue(true);}@Testpublic void thirdTest() {System.out.println("Test #3 with data: "+id+". "+account);assertTrue(true);}}檢查上面的代碼,每個人都可以注意到我使用了常規的TestNG @Test批注應用于void方法。 我也聲明了一個構造函數,但是其目的將在后面討論。 TestNG具有非常有用的注釋– @Factory和@DataProvider 。 我建議在官方TestNG文檔站點上閱讀有關它們的信息 。 在閱讀這些注釋時,我將繼續進行實際操作:
package kill.me.later;import org.testng.annotations.DataProvider; import org.testng.annotations.Factory;public class SampleFactory {@Factory(dataProvider="dp")public Object[] createInstances(int id, String account) {return new Object[] {new SomeTest(id, account)};}@DataProvider(name="dp")public static Object[][] dataProvider() {Object[][] dataArray = {{1, "user1"},{2, "user2"}};return dataArray;}}最后一個代碼段提供了SomeTest類中每個測試方法的運行,并在dataProvider中聲明了數據集。 但是,如果嘗試在TestNG的幫助下運行SampleFactory類,則不會從“問題”部分獲得測試方法的執行順序。 為了實現順序執行測試方法的順序,您需要使用TestNG XML啟動器:
< !DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 請注意group-by-instances參數。 正是它為測試方法的執行提供了理想的順序。 因此,現在您可以輕松組織此類DDT運行的測試。
翻譯自: https://www.javacodegeeks.com/2014/01/testng-run-tests-sequentially-with-dataprovider-inside-one-test-class.html
總結
以上是生活随笔為你收集整理的TestNG:在一个测试类中使用@DataProvider依次运行测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cad状态栏设置在哪(cad状态栏在哪个
- 下一篇: Win10怎么修改DNS地址?