数据驱动测试之——CSV+TestNG

对于利用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;
    }

}
原文地址:https://www.cnblogs.com/taoSir/p/5106304.html