zoukankan      html  css  js  c++  java
  • 白盒测试的学习之路----(五)TestNG的参数分离

         之前的测试用例直接嵌套在代码中,不便于维护和测试设计,应该单独把测试用例放在excel内,然后程序从中读取数据到相应的接口内即可。使用ava程序对Microsoft Office格式档案读和写的功能提供的POI库就可以完成读取数据的功能,而其中又主要使用的是HSSF类,该类 提供读写Microsoft Excel格式档案的功能。编写ParserExcel类,主要有三个函数:

     其中,readExcelContent方法主要用于读取excel的sheet下的相关数据,保存到数组Object中,并返回;showContent是自己测试的时候,打印出读取的数据所用,getCellFormatValue主要是用于将从excel中读取的数据进行格式转换,判断当前Cell的Type,然后进行各种处理;核心代码如下:

    public Object[][] readExcelContent(String sheetName) {
          sheet = wb.getSheet(sheetName);
          int rowNum = sheet.getLastRowNum();
         //getRow(int rownum) ,Returns the logical row (not physical) 0-based.
        row = sheet.getRow(2);
         //getPhysicalNumberOfCells:Gets the number of defined cells (NOT number of cells in the actual row!)
        int colNum = row.getPhysicalNumberOfCells();
        Object[][] ExcelInfo = new Object[rowNum-3][colNum-1];
        for (int i = 0; i < rowNum-3; i++) {
       row = sheet.getRow(i + 3);
       for (int j = 0; j < colNum-1; j++) {
        ExcelInfo[i][j] = getCellFormatValue(row.getCell(j+1)).trim();
    }
    }
        return ExcelInfo;
    }

    测试用例简单设计如下:

    然后修改测试程序代码:

    public class testSourceCode {

    static String tmp = "D:\testcase.xls";
    private static ParserExcel pe = new ParserExcel(tmp);


    @Test(dataProvider="providerMethod")
    public void testjudgeKindOfTriangle(String sa,String sb,String sc,String Expt) {
    int a=Integer.parseInt(sa);
    int b=Integer.parseInt(sb);
    int c=Integer.parseInt(sc);
    int tmp=Integer.parseInt(Expt);
    int reslut =TriangleJudgeSourceCode.judgeKindOfTriangle(a,b,c);
    Assert.assertEquals(reslut, tmp);
    }


    @DataProvider
    public static Object[][] providerMethod(Method method){
    String sheetName = method.getName();
    System.out.println(sheetName);
    return pe.readExcelContent(sheetName);
    }

    运行该测试程序,测试结果如下:

  • 相关阅读:
    如何在获取celery中的任务执行情况
    python flask接口开发和入参的三种方式args、values、json
    python3 redis数据库写入方法和json格式的坑
    python3 封装好的时间戳转换函数,可直接使用
    python3 *args 、 **args 在函数定义和调用中的应用
    python中剔除字典重复项,可以使用集合(set)。
    python3 文件读写操作中的文件指针seek()使用
    jmeter数据库连接配置
    Python自动化培训第一周学习总结
    jmeter分布式压测
  • 原文地址:https://www.cnblogs.com/loleina/p/5133587.html
Copyright © 2011-2022 走看看