读取csv文件可以直接读取,也可以使用javacsv.jar,后者比较简单,这个也可以变相认为是对表格的处理,我们可以在表格中做好数据,存储成csv格式的文件,后续对xlsx表格的操作抽个时间再记录下。
package com.testngDemo; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.charset.Charset; import java.util.ArrayList; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.csvreader.CsvReader; public class Demo_testngCsv { public static void main(String args[]) { ArrayList<String []> list = readCsv("E:/csv测试表.csv"); for(int i=0;i<list.size();i++) { System.out.println(list.get(i)[0]);//name System.out.println(list.get(i)[1]);//age System.out.println(list.get(i)[2]);//sex System.out.println("-------------------"); } } public static ArrayList<String []> readCsv(String filePath) { ArrayList<String[]> list = new ArrayList<String []>();//创建保存数据集合 //创建csvreader读取 CsvReader cReader = null; try { cReader = new CsvReader(filePath,',',Charset.forName("GBK")); //是否跳过表头 cReader.readHeaders(); //录入数据 while(cReader.readRecord()){ list.add(cReader.getValues()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ cReader.close(); } //如果使用testng的DataProvider,可以返回一个二维数组 Object data[][] = new Object[list.size()][]; for(int i=0;i<list.size();i++) { data[i]=list.get(i); } return list; } }
在E盘下有个csv文件表:
运行可以看见:
————————————————————————————————————————————————————————————————
总结下,这也可以作为一种数据驱动的方式,用表格存储测试数据,甚至是元素属性,实现数据和代码的分离。这样更能降低代码的耦合度,脚本也更容易维护。