簡體   English   中英

TestNG:如何基於Excel文件中的行數重新運行testng套件

[英]TestNG: How to rerun testng suite based on number of rows in Excel file

我有一個由3個Java類組成的Testng套件,用於自動化移動應用程序的3個不同頁面:

類1 (這是關於注冊並將數據從excelsheet導入到String數組中。然后在應用程序的頁面1上輸入數據。AndroidDriver也在該類中初始化。)

2類擴展了1類(這與付款有關)

第3類 (關於復習的最終頁面。有一個按鈕可以返回到第1頁注冊以開始新的訂單)

現在,我要做的是根據excelsheet中填充的行數繼續運行套件。

執行順序應為:

  1. 從XLS => Class 1-> Class 2-> Class 3導入行1(如果存在另一行)
  2. 從XLS => Class 1-> Class 2-> Class 3導入行2(如果存在另一行)
  3. 從XLS => Class 1-> Class 2-> Class 3導入行3(結束測試,因為沒有更多行)

我該如何實現? 我一直在閱讀有關DataProvider和工廠的信息,但我從未使用過它們,其他所有帖子似乎都表明只能通過使用它們來解決此問題。 我使用的是由2&3類繼承的單個驅動程序實例。我在測試中並入了Apache POI庫,以便從XLSX文件讀取數據並將其成功存儲在數組中。

更新此代碼正確嗎?

public class WebTestFactory {
  @Factory
  public Object[] createInstances() {
   Object[] result = new Object[number of rows]; 
   for (int m = 0; m < number of rows; m++) {
      result[m] = m;
    }
    return result;
  }
}

您可以執行以下操作:

@Factory
public static Object[] createTests() {
    List<Object> tests = new ArrayList<>();
    Rows rows = // your POI rows
    for (Row row : rows) {
        tests.add(new Class1Test(row));
        tests.add(new Class2Test(row));
        tests.add(new Class3Test(row));
    }
    return tests.toArray();
}

這將為每一行創建所需的測試類實例,並將它們排隊以供TestNG執行。

您也可以將工廠與數據提供程序一起使用。 有關詳細信息,請參見http://testng.org/doc/documentation-main.html#factories

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM