Java接口自动化测试(四) — 使用Excel做数据驱动
一、说明
- 数据驱动测试的核心:是测试数据与测试脚本分离,实现测试脚本的参数化,例如:在使用工具测试时,常常会使用到参数化设置;
- 使用数据驱动测试方便后期维护,提高脚本的可重用性;
- 做数据驱动的方式有多种例如:Excel、CSV、MySQL等
二、使用Excel实现数据驱动
1、在pom文件添加POI依赖
org.apache.poi poi 3.17 org.apache.poi poi-ooxml 3.17 org.apache.poi poi-ooxml-schemas 3.17
2、新建一个Class命名为ExcelUtils
package com.test.excel; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author lh * @date 2020/7/3 * @description */ public class ExcelUtils { /** * 读取Excel数据 * @return List * @throws Exception */ public static List= row.getCell(j); if (cell == null){ continue; } //封装成map map.put(columns[j], getCellFormatValue(cell)); } //System.out.println(map); //将map放入List list.add(map); } fis.close(); xf.close(); } return list; } //格式化数值类型 public static Object getCellFormatValue(Cell cell){ Object cellValue = null; /** * getCellTypeEnum()方法是枚举类型,用于判断单元格值类型,有以下五种格式: * _NONE(-1), * NUMERIC(0), * STRING(1), * FORMULA(2), * BLANK(3), * BOOLEAN(4), * ERROR(5); */ switch(cell.getCellTypeEnum()){ case STRING: cellValue = cell.getStringCellValue(); break; case NUMERIC: /**如果是数字类型转换成数字类型,但是初始化数字加的.0,因此可以转换成int类型去掉.0 * cell.getNumericCellValue() */ cellValue = new Double(cell.getNumericCellValue()).intValue(); break; case BOOLEAN: break; case FORMULA: break; } return cellValue; } //测试 public static void main(String[] arg) throws Exception{ ExcelUtils excelTest = new ExcelUtils(); excelTest.readExcle(); } }
三、在测试用例中使用
- 在testng中使用需要新创建一个方法getDataMethod(),返回Object[][]类型
- 使用注解@DataProvider,为测试方法提供数据
- 在测试方法上使用@Test(dataProvider = "getDataMethod")接收数据
- 使用数据驱动有一个好处,测试方法可以写一个,根据参数频繁调用一个方法(和上一篇对比https://www.cnblogs.com/liho/p/13225137.html)
package com.test.httpclient;
import com.alibaba.fastjson.JSONObject;
import com.test.excel.ExcelUtils;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.List;
import java.util.Map;
/**
* @author lh
* @date 2020/6/8
* @description
*/
@Test
public class LoginCase {
HttpClientPost httpClientPost = new HttpClientPost();
@DataProvider
public Object[][] getDataMethod() throws Exception{
//读取Excel中的数据
List
四、查看运行结果