對於利用Webdriver做自動化的童鞋,對於如何將元素或者輸入資料如何和編碼分離都應該不會太陌生,本著一邊學習一邊分享的心態,大概總結了一下關於利用CSV、XML以及Excel來存放資料,然後在結合TestNG來執行資料驅動測試。
下面是關於CSV+TestNG進行資料驅動的程式碼:
package com.util.datadriver; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * * @author LTao 使用TestNG和CSV檔案進行資料驅動 */ public class DataProviderCSV { //TestNG定義一個DataProvider @DataProvider(name = "testData") public static Object[][] words() throws Exception { return getData("date\\testDate.csv"); } //利用TestNG的特性,可以直接在方法中傳入引數,這些引數從DataProvider中資料化傳進來 @Test(dataProvider = "testData") public void testDtaa(String input1, String input2, String result1) { System.out.println(input1); System.out.println(input2); System.out.println(result1); } public static Object[][] getData(String filePath) throws Exception { String line; //定義list來存放CSV中的資料,陣列存放的是每行的資料 List<String[]> list = new ArrayList<String[]>(); //定義一個BufferedReader方便一行一行來讀取csv中的資料 BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(filePath))); //先讀一行,第一行定義的是關鍵字對應的解釋語言,不用存放到list中, br.readLine(); while ((line = br.readLine()) != null) { String[] fileds = line.split(","); //獲取每行的資料 list.add(fileds); } br.close(); //定義object[][]二維陣列,用list.size()定義二維陣列行的限度 Object[][] result = new Object[list.size()][]; for (int i = 0; i < list.size(); i++) { result[i] = list.get(i); //將CSV每行中的資料存放到二維陣列中 } return result; } }