在日常的自动化测试脚本编写的过程中,有时要将获取的测试结果或者测试数据存放在数据文件中,以用作后续的参数化测试。常用的文件文件类型无非 txt、csv、xls、properties、xml 这五种文件类型,前文已讲述过了txt文件相关的读写操作(读、写),此文主要讲述 CSV 文件的写入操作。此文中 CSV 文件的写入方法和最终的测试方法,各位小主们在实际参考应用时,需要进行相应的修改(例如文件路径等)才可。若有不足之处,敬请各位大神告知,不胜感激!
闲话少述,小二上码勒
CSV文件写入方法源码如下所示,敬请参阅!
1 /** 2 * @function 文件写入: CSV文件 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java csvWrite, 2014-11-25 15:58:20 Exp $ 6 * 7 * @param filename : CSV文件名 8 * @param delimiter : CSV文件分隔符 9 * @param encoding : CSV文件编码格式 10 * @param csvdata : CSV文件内容, 二维数组 11 * 12 * @return boolean 13 */ 14 public boolean csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata){ 15 boolean success = false; 16 17 /* csv写对象 */ 18 CsvWriter csvwriter = null; 19 20 /* 参数校验: 为null或空字符串时, 抛出参数非法异常 */ 21 if (filename == null || "".equals(filename) || !assertFileType(filename, "CSV")) { 22 throw new IllegalArgumentException(); 23 } 24 25 /* 分隔符默认处理, 若分割符号为空, 则默认 ‘,’ */ 26 if ("".equals(delimiter)) { 27 delimiter = ','; 28 } 29 30 /* 参数校验: 编码格式是否在格式范围内 */ 31 if(!this.constantslist.ENCODING_TYPE.contains(encoding)){ 32 this.message = "参数非法:第三个参数{CSV编码}非法, 编码格式{" + encoding + "}不在CSV文件编码列表[" + this.constantslist.ENCODING_TYPE.toString() + "]中, 不支持!"; 33 this.logger.error(this.message); 34 35 throw new UnsupportedCharsetException(this.message); 36 } 37 38 try { 39 // delete file 40 this.deleteFile(filename); 41 42 csvwriter = new CsvWriter(filename, delimiter, Charset.forName(encoding)); 43 44 /* 数据写入 */ 45 for (String[] rowdata : csvdata) { 46 csvwriter.writeRecord(rowdata); 47 } 48 49 csvwriter.close(); 50 51 success = true; 52 } catch (IOException ioe) { 53 this.message = "文件 {" + filename + "} 写入失败!"; 54 this.logger.error(this.message, ioe); 55 56 success = false; 57 } catch (UnsupportedCharsetException uce){ 58 this.message = "文件 {" + filename + "} 编码格式设置失败!"; 59 this.logger.error(this.message, uce); 60 61 success = false; 62 } 63 64 return success; 65 }
CSV文件写入方法测试源码如下所示,敬请参阅!
1 /** 2 * Test : read|write CSV file 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_csvWrite_and_csvRead, 2014-11-25 16:28:20 Exp $ 6 * 7 */ 8 @Test 9 public void test_csvWrite_and_csvRead(){ 10 this.message = " TEST:FileUtils.csvWrite(String filename, char delimiter, String encoding, ArrayList<String[]> csvdata)"; 11 this.logger.debug(this.message); 12 13 this.fu = new FileUtils(); 14 15 // change to you local path 16 String filename = this.constantslist.PROJECTHOME + this.constantslist.FILESEPARATOR + 17 "testng-temp" + this.constantslist.FILESEPARATOR + "createfile.csv"; 18 19 ArrayList<String[]> csvdata = new ArrayList<String[]>(); 20 String[] rows; 21 22 // init csv data 23 for (int i = 0; i < 20; i++) { 24 rows = new String[10]; 25 26 for (int j = 0; j < rows.length; j++) { 27 rows[j] = i + " = " + j; 28 } 29 30 csvdata.add(rows); 31 } 32 33 boolean w = this.fu.csvWrite(filename, ',', "UTF-8", csvdata); 34 35 Assert.assertEquals(w, true, "Test case failed."); 36 }
至此, Java学习-015-CSV 文件写入实例源代码 顺利完结,希望此文能够给初学 Java 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^