前言
早期我们使用TestNG 来做数据驱动进行测试,测试数据是写在测试用例脚本中。这会使得测试脚本的维护工作量很大。因此我们可以将测试的数据和脚本分开。
使用csv做数据驱动测试
使用csv做数据驱动
创建csv数据文件
具体代码示例如下:
import@H_404_23@ org.testng.annotations.DataProvider; @H_404_23@ org.testng.annotations.Test; @H_404_23@ java.io.BufferedReader; @H_404_23@ java.io.FileInputStream; @H_404_23@ java.io.InputStreamReader; @H_404_23@ java.util.ArrayList; @H_404_23@ java.util.HashMap; @H_404_23@ java.util.List; @H_404_23@ java.util.Map; @H_404_23@public @H_404_23@class@H_404_23@ TestCSVData { /**@H_404_23@ * 读取csv中的文件 * @param@H_404_23@ filePath * @return @H_404_23@*/ @H_404_23@public List<Map<String,String>>@H_404_23@ getData(String filePath){ List<Map<String,String>> list=@H_404_23@new ArrayList<Map<String,1)">();; FileInputStream fileInputStream = @H_404_23@null@H_404_23@; @H_404_23@try@H_404_23@ { fileInputStream = @H_404_23@new@H_404_23@ FileInputStream(filePath); InputStreamReader inputStreamReader = @H_404_23@ InputStreamReader(fileInputStream); BufferedReader br = @H_404_23@ BufferedReader(inputStreamReader); @H_404_23@for (String line = br.readLine(); line != @H_404_23@null; line =@H_404_23@ br.readLine()) { Map<String,String> map = @H_404_23@new HashMap<>@H_404_23@(); String key=line.split(",")[0@H_404_23@]; String value=line.split(",")[1@H_404_23@]; map.put("userName"@H_404_23@,key); map.put("passWord"404_23@catch@H_404_23@ (Exception e) { e.printStackTrace(); } @H_404_23@return@H_404_23@ list; } @DataProvider @H_404_23@public@H_404_23@ Object[][] testCSVData() { List<Map<String,String>> result = getData("d:\\data.csv"@H_404_23@); Object[][] files = @H_404_23@ Object[result.size()][]; @H_404_23@for (@H_404_23@int i = 0; i < result.size(); i++@H_404_23@) { files[i] = @H_404_23@ Object[]{result.get(i)}; } @H_404_23@ files; } @Test(dataProvider = "testCSVData"@H_404_23@) @H_404_23@void testCSVData(Map<String,String>@H_404_23@ param) { System.out.println(param.get("userName")+"\t"+param.get("passWord"@H_404_23@)); } }
化赋值。
运行效果