資料驅動測試之——CSV+TestNG

tao先生發表於2015-11-05

對於利用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;
    }

}

相關文章