实际应用中我们常是一个业务流会串入很多测试用例,便于管理,这里的业务流我们可以称为一个测试场景,
在我的代码中一个业务流为一个测试套件
一个套件可能是一条用例,也有可能是多条用例,套件和用例存在的关系是一对多,且有先后顺序
比如上面的产品购买套件 先是选中产品,加入购物车,再是删除订单 退出登录
这里的思路也可以像用例读操作一样,
一行行读取,直到读取对应的套件名称,再转到第二列,读取对应的测试用例,找到用例再到用例对应的Excel 文件读取该用例对应的Sheet 名称
具体实现代码
/**
* 执行指定的测试套件
* @param SuiteName 测试套件名称
* @throws IOException
* @throws InterruptedException
*/
public static void TestSuite(String SuiteName) throws IOException, InterruptedException {
//设置数据路径
try {
String TestSuite=constant.TestSuite;
System.out.println("测试套件的路径"+TestSuite);
//实例化文件流
FileInputStream ExcelFile = new FileInputStream(TestSuite);
// 实例化工作本
XSSFWorkbook ExcelWBook = new XSSFWorkbook(ExcelFile);
//实例化Sheet 名
//获取测试套件的Sheet ,如果此处ExcelWsheet 为null可能是不存在测试套件的Sheet
XSSFSheet ExcelWSheet = ExcelWBook.getSheet("测试套件");
//循环扁历整个测试套件的行号
for (int i=1;i<=ExcelWSheet.getLastRowNum();i++){
//按行取出测试套件的名称
String TestSuiteName=ExcelWSheet.getRow(i).getCell(0).getStringCellValue().trim();
// 如果按行读取到的测试套件与测试任务调度中的 测试套件的运行模式==yes 相同
if (TestSuiteName.equals(SuiteName)){
//取出对应测试套件的用例名称和测试数据索引 (这里的数据索引主要是指示代码取测试数据中哪一行数据)
String TestCaseName=ExcelWSheet.getRow(i).getCell(1).getStringCellValue().trim();
String TestCaseData=ExcelWSheet.getRow(i).getCell(2).getStringCellValue().trim();
//依据测试套件的内容去调用相应的测试用例
System.out.println("测试用例名称是"+TestCaseName+"测试数据指针是"+TestCaseData);
// 到这里我们就已得到 需要执行哪个测试用例,测试用例参数化时取哪一行的值
TestCase(TestCaseName,TestCaseData);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}