簡體   English   中英

Selenium Webdriver關鍵字由TestNG集成驅動

[英]Selenium Webdriver Keyword driven with TestNG integration

我正在學習與TestNG和ReportNG集成的關鍵字驅動框架。 我的要求是

  1. 使用TestNG觸發自動化
  2. 從Excel工作表中讀取關鍵字和值(一個工作表包含關鍵字和操作。另一個工作表包含每個對象的xpath)
  3. 使用關鍵字驅動的方法來驅動自動化
  4. 使用ReportNG生成報告

TestNG文件:

<suite name="Test Results" parallel="false" thread-count="3">
<listeners>
    <listener class-name="org.uncommons.reportng.HTMLReporter"/>
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
</listeners>
<test name="Automation Test">
    <classes>
        <class name="TestSuite1">
        </class>
    </classes>
</test>

Excel Sheet1:

在此處輸入圖片說明

Excel Sheet2:

可以將其移至屬性文件,但截至目前,我正在讀取excel文件

在此處輸入圖片說明

TestSuite文件:

@Test(dataProvider="hybridData")
public void testLandingScreen(String testcaseName,String testStep,String keyword,String execute,String objectName, String value) throws Exception {
        excelUtils.processXls(testcaseName, testStep, keyword, execute, objectName, value);
    }
}

@DataProvider(name="hybridData")
public Object[][] getDataFromDataprovider() throws IOException {
    Object[][] object = null;
    ReadExcelFile file = new ReadExcelFile();

    //Read keyword sheet
    Sheet sheet = file.readExcel(BaseData.XLS_PATH,"TestData.xlsx" , "TSData");
    //Find number of rows in excel file
    int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();
    object = new Object[rowCount][6];
    for (int i = 0; i < rowCount; i++) {
        //Loop over all the rows
        Row row = sheet.getRow(i+1);
        //Create a loop to print cell values in a row
        for (int j = 0; j < row.getLastCellNum(); j++) {
            //Print excel data in console
            object[i][j] = row.getCell(j).toString();
            //object[i][j] = row.getCell(j);
        }
    }
    return object;
}

誰能幫助我澄清以下問題?

  1. 當我運行與ReportNG集成的測試時,每個excel行都被視為單個測試用例,並且報告將總行數顯示為測試用例數。

    關於如何根據TC名稱閱讀Excel工作表並基於此生成ReportNG報告有什么建議嗎?

  2. 如果上述問題的答案是肯定的,那么如何調用單個@Test方法來生成多個測試用例?

對此,我們將給予任何幫助。 謝謝。

我認為問題出在用於存儲測試步驟的數組中。 您正在使用2D數組,因此測試用例和測試步驟之間沒有關聯。

我會改用Map並將其轉換為數據提供者的2D數組。

例:

Map<String, String> map = new HashMap<String, String>();
map.put("TS1", "step1");
map.put("TS2", "step2");
object[0][1] = map;

首先,您需要了解在實現中使用的是什么數據提供程序... http://toolsqa.com/selenium-webdriver/testng-data-provider-excel/ >該網站可以幫助您...

數據提供者發送用於執行測試的參數。...每行將是用於執行每個測試的參數...換句話說。

冷杉行將是您的第一個測試的參數...第二個原始將是您的第二個測試的參數...等等...

我認為您對dataprovider的使用有誤... dataprovider用於向測試提供數據...例如用戶名或密碼...

對於元素的位置,還有其他實踐,如測試自己的代碼中..其他函數或PAGEOBJECTS中的...

所以,簡短的答案是...請檢查什么是dataprovider ...

最好的祝福

暫無
暫無

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

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