【问题标题】:Selenium Webdriver Keyword driven with TestNG integration使用 TestNG 集成驱动的 Selenium Webdriver 关键字
【发布时间】:2017-01-17 01:41:51
【问题描述】:

我正在学习带有 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 方法来生成多个测试用例?

对此的任何帮助都非常感谢。谢谢。

【问题讨论】:

    标签: testing selenium-webdriver automation testng reportng


    【解决方案1】:

    我认为问题在于用于存储测试步骤的数组。您使用的是二维数组,因此测试用例和测试步骤之间没有关联。

    我会改用 Map 并将其转换为数据提供者的二维数组。

    例子:

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

    【讨论】:

      【解决方案2】:

      首先,您需要了解什么是您在实现中使用的数据提供者...http://toolsqa.com/selenium-webdriver/testng-data-provider-excel/ > 这个网站可以帮助您...

      数据提供者发送参数以执行您的测试....每一行将是执行每个测试的参数...换句话说...

      第一行将是您第一次测试的参数...第二个 raw 将是您第二次测试的参数...等等...

      我认为您对 dataprovider 的使用有误... dataprovider 用于向测试提供数据...例如用户名或密码...

      对于元素的位置还有其他做法,如在自己的测试代码中..在其他函数或PAGEOBJECTS中...

      所以,简短的回答是...请检查 dataprovider 是什么...

      最好的问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-30
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多