【问题标题】:TestNG how to iterate through different excel sheets from a source sheetTestNG如何从源表中迭代不同的excel表
【发布时间】:2016-06-02 17:28:40
【问题描述】:
专家您好:我正在使用 Selenium Webdriver 和 TestNG。我的数据源是一个包含多个测试数据表的 Excel 工作簿。该工作簿还有一个汇总表,其中包含每个测试数据表的 SheetName。
使用 TestNG,有没有办法从摘要表中获取 SheetName 并处理工作簿中的每个测试数据表?
例如:
- 从摘要表中,选择第一个 sheetName(比如 sheet1)
- 运行 sheet1 中的所有 testData
- 从摘要表中,选择下一个 sheetName(比如 sheet2)
- 运行 sheet2 中的所有 testData
- 等等,直到摘要表中的最后一个表名
感谢大家的帮助。
【问题讨论】:
标签:
selenium-webdriver
testng
【解决方案1】:
这是我的第一个解决方案,它使用工厂遍历我的摘要表实例化类,以解析每个相应工作表中的测试记录。 嗯 - 我仍然想知道是否有更好的方法来执行相同的操作。
ALSO - 我还在班级中使用了一个 STATIC 成员,因为我想在由工厂实例化的类。
这是脚本,以防有一天它可以帮助某人或更好。
public class FactoryMethod {
@Factory(dataProvider="dataSuite")
public Object[] createInstances(int id, String TestSuite) {
return new Object[] {new FactoryMethodClass(id, TestSuite)};
}
@DataProvider(name="dataSuite")
public static Object[][] dataSuite() {
Object[][] dataArray = {{1, "TEST SUITE 1"},{2, "TEST SUITE 2"}};
return dataArray;
}
}
public class FactoryMethodClass {
private static int SHAREDcounter = 1000;
private int id = 100;
private String TestSuite = "";
public FactoryMethodClass(){}
public FactoryMethodClass(int id, String TestSuite) {this.id = id; this.TestSuite = TestSuite;}
@DataProvider(name="dataRecords")
public static Object[][] dataPro() {
Object[][] dataArray = {{1, "TEST RECORD 1"}, {2, "TEST RECORD 2"}, {3, "TEST RECORD 3"}};
return dataArray;
}
@Test (dataProvider="dataRecords")
public void firstDataPro(int id, String TestRecord) {
System.out.println("Running Test Record " + TestRecord + " of Test Suite " + TestSuite + " with Value = " + SHAREDcounter++);
Assert.assertTrue(true);
}
}