【问题标题】:How can iterate the test suites in the TestNG如何迭代 TestNG 中的测试套件
【发布时间】:2013-10-09 16:13:16
【问题描述】:

例如,我有一个包含多个类的 TestSuite。

迭代 1 TestSuite 在第一次执行时会取 Excel Sheet 第一行的数据。

迭代 2 TestSuite 再次执行第二次,它将在 Excel 工作表的第二行中获取数据。

等等……

供您参考 -> 我正在使用 Apache POI 进行数据驱动。 -> 我没有兴趣在 testng xml 文件本身中提供迭代参数。 -> 测试套件应该一个一个地执行。

任何帮助表示赞赏。

【问题讨论】:

  • 例如:String testData = DataRead("SheetName","ColumnName");此方法通过使用 Apache Poi 调用从 Excel 表读取数据的用户定义函数,我可以在我的类或测试中的任何位置使用“testData”变量。我只是好奇迭代测试套件。清楚地说,在完成 \@AfterSuite [关闭线程] 我需要调用 \@BeforeSuite [in New Thread]。
  • 请将此添加到问题中,而不是在 cmets 中发布。它使未来的读者更容易理解。

标签: java junit selenium-webdriver testng test-suite


【解决方案1】:

我猜你是直接通过 @Test 方法使用 Apache POI。如果是,我建议为您的测试添加一个 DataProvider 并使其返回 Excel 字段数组的数组,或者只是 Excel 行的数组。请看http://testng.org/doc/documentation-main.html#parameters-dataproviders,这种方式不需要在testng.xml中指定参数。

//This method will provide data to any test method that declares that its Data Provider
//is named "dataFromExcelSheet"
@DataProvider(name = "dataFromExcelSheet")
public Object[][] createData1() {
    //I have no idea about Apache POI methods, so names are nearly random
    int numberOfRows = sheet.getNumberOfRows();
    Object[][] lines = new ExcelRow[numberOfRows][1];
    for (int i = 0; i < numberOfRows; i++) {
        lines[i][0] = sheet.getNextRow;
    }
    return lines;
}

//This test method declares that its data should be supplied by the Data Provider
//named "dataFromExcelSheet"
@Test(dataProvider = "dataFromExcelSheet")
public void yourTest(ExcelRow row) {
    //Write your code here
}

【讨论】:

  • 感谢您的解决方案。但这里的事情是,例如: String testData = DataRead("SheetName","ColumnName");此方法通过使用 Apache Poi 调用从 Excel 表读取数据的用户定义函数,我可以在我的类或测试中的任何位置使用“testData”变量。我只是好奇迭代测试套件。清楚地说,在完成 \@AfterSuite [关闭线程] 我需要调用 \@BeforeSuite [in New Thread]。
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2012-08-11
相关资源
最近更新 更多