Java接口自动化测试框架系列(二)表格设计与数据读取
一、测试系统分析
不同系统有不同的接口,通过分析这些接口,提取共同点可以得到不同地区的系统共有的接口。
如:登录、登出、用户信息完善等接口
二、表格设计
- 不同列定义不同的参数
- 不同行定义不同的地区
- 由于不同地区的接口加密方式不同,所以直接在表格中规定接口的地区、接口地址、验签方式(encryption_type)、密钥等字段。
三、表格解析
解析方法
package com.Auto_Test.utils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ReadCSV { public Workbook workbook; public Sheet sheet; public Cell cell; int rows; int columns; public String fileName; public String caseName; public ArrayList<String> arrkey = new ArrayList<>(); String sourceFile; /** * @param fileName excel文件名 * @param caseName sheet名 */ public ReadCSV(String fileName, String caseName) { super(); this.fileName = fileName; this.caseName = caseName; } /** * 获得excel表中的数据 */ public Object[][] getExcelData() throws BiffException, IOException { workbook = Workbook.getWorkbook(new File(getPath())); sheet = workbook.getSheet(caseName); rows = sheet.getRows(); columns = sheet.getColumns(); // 为了返回值是Object[][],定义一个多行单列的二维数组 HashMap<String, String>[][] arrmap = new HashMap[rows - 1][1]; // 对数组中所有元素hashmap进行初始化 if (rows > 1) { for (int i = 0; i < rows - 1; i++) { arrmap[i][0] = new HashMap<>(); } } else { System.out.println("excel中没有数据"); } // 获得首行的列名,作为hashmap的key值 for (int c = 0; c < columns; c++) { String cellvalue = sheet.getCell(c, 0).getContents(); arrkey.add(cellvalue); } // 遍历所有的单元格的值添加到hashmap中 for (int r = 1; r < rows; r++) { for (int c = 0; c < columns; c++) { String cellvalue = sheet.getCell(c, r).getContents(); arrmap[r - 1][0].put(arrkey.get(c), cellvalue); } } return arrmap; } /** * 获得excel文件的路径 * @return * @throws IOException */ public String getPath() throws IOException { File directory = new File("."); sourceFile = directory.getCanonicalPath() + "\\src\\" + fileName + ".xls"; return sourceFile; } }
需要此项目的可以加我微信15224918643获取,也可以一起交流技术。
欢迎打扰