做接口測試時,通常需要讀取測試用例數據,apache早就為我們提供了讀取excel數據的jar包-POI。
使用POI讀取excel方法
(1)創建maven項目,添加poi依賴
創建maven項目,file --> new Project -->maven
添加依賴,pom.xml文件中添加。刷新maven。
<dependencies> <!--讀取 excel 的所需jar包--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> </dependencies>
(2)創建TestCase類,用於將測試用例存儲到對象中。
public class TestCase { /** * 測試用例對象 */ String CaseId; String Describe; String Url; String Method; String Parameters; String Expect; String Actual; public String getCaseId() { return CaseId; } public void setCaseId(String caseId) { CaseId = caseId; } public String getDescribe() { return Describe; } public void setDescribe(String describe) { Describe = describe; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; } public String getMethod() { return Method; } public void setMethod(String method) { Method = method; } public String getParameters() { return Parameters; } public void setParameters(String parameters) { Parameters = parameters; } public String getExpect() { return Expect; } public void setExpect(String expect) { Expect = expect; } public String getActual() { return Actual; } public void setActual(String actual) { Actual = actual; } @Override public String toString() { return "TestCase{" + "CaseId='" + CaseId + '\'' + ", Describe='" + Describe + '\'' + ", Url='" + Url + '\'' + ", Method='" + Method + '\'' + ", Parameters='" + Parameters + '\'' + ", Expect='" + Expect + '\'' + ", Actual='" + Actual + '\'' + '}'; } }
(3)讀取excel,並將讀取的數據存儲到對象列表中。
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; public class Excelread { public static void main(String[] args) { ArrayList<TestCase> list = new ArrayList<>(); File file = new File("D:\\testjavaIO\\test11\\testcase.xlsx"); String sheetName = "Sheet1"; try { //XSSFWorkbook 是讀取2007以上版本的表格,及.xlsx結尾,所以使用XSSFWorkbook //HSSFWorkbook 是讀取2003版本的表格,及.xls結尾 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(file)); //獲取表 Sheet sheet = xssfWorkbook.getSheet(sheetName); //遍歷表格 //起始行,第一行是標題欄不需要讀取 int firstRowIndex = sheet.getFirstRowNum() + 1; //結束行 int lastRowIndex = sheet.getLastRowNum(); //遍歷行 for (int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) { Row row = sheet.getRow(rIndex); if(row != null){ //存儲遍歷的每行用例的元素值 String[] listcase = new String[row.getLastCellNum() - row.getFirstCellNum()]; //起始列 int firstCellIndex = row.getFirstCellNum(); //結束列 int lastCellIndex = row.getLastCellNum(); for (int cIndex = firstCellIndex; cIndex <= lastCellIndex; cIndex++) { Cell cell = row.getCell(cIndex); if(cell != null){ listcase[cIndex] = cell.toString(); } } //將每條測試用例存儲到一個testcase對象 TestCase testCase = new TestCase(); testCase.setCaseId(listcase[0]); testCase.setDescribe(listcase[1]); testCase.setUrl(listcase[2]); testCase.setMethod(listcase[3]); testCase.setParameters(listcase[4]); list.add(testCase); } } } catch (IOException e) { e.printStackTrace(); } for(int i = 0; i < list.size();i++) { System.out.println(list.get(i).toString()); } } }