TestNG框架教程三:参数化与数据驱动

一、@Parameters传参

Parameters一般用于比较简单的参数,只能一个参数一个值,不能多值或集合。

1.在testng.xml文件中定义参数列表

2.Parameters注解在测试方法上指定参数列表,然后在测试方法中声明对应的形参,形参与参数列表一一对应

使用testng.xml执行,结果如下:

二、@DataProvider传参

DataProvider适用于复杂的多组数据的情况。@DataProvider注解的函数返回的必须是Object[][]

使用testng.xml执行,结果如下:

三、读取文件传参

思路就是:

1.读取数据源文件,可以是EXCEL,XML,YAML,甚至可以是TXT文本。

2.使用@DataProvider组装数据,做数据驱动。

这里主要介绍几种读取文件做数据驱动方式。

1.XML做数据源

用DOM4J解析XML,ParserXml.java文件

先发布文章吧。DOM4j的xml语法等我先看看。^ ^!

2.CSV做数据源

user.csv文件内容:

使用BufferedReader读取文件,这种对于csv、excel、txt这种简单格式的文件都很好用

package com.util.tools;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;

public class util_readfile {
    public static void main(String[] args) throws IOException {
       // 测试读取文件方法
    	Object[][] s=getTestData("user.csv");
    	for(Object[] x:s) {
        	System.out.println("姓名:"+x[0]+",电话:"+x[1]+",地址:"+x[2]);
    	}
    }
	public static Object[][] getTestData(String filePath) throws IOException {
        ArrayList<Object[]> records = new ArrayList<Object[]>();
        String record;
        // 设定UTF-8字符编码集,使用带缓冲区的字符输入流BufferedReader 读取文件内容;
        BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));
        // 忽略读取CSV文件的标题行(第一行!);
        file.readLine();
        /*
         * 遍历读取CSV文件中除第一行外其他所有内容,并存在在名为records的ArrayList中
         * 每一个records中存储的对象为一个String数组;
         */
        while ((record = file.readLine()) != null) {
            String fields[] = record.split(",");
            records.add(fields);
        }
        // 关闭文件对象;
        file.close();
        // 第一函数返回值,即Object[][]
        // 将存储测试数据的list 转换为一个Objectde 的二维数组;
        Object[][] results = new Object[records.size()][];
        for (int i = 0; i < records.size(); i++) {
            results[i] =  records.get(i);
        }
        return results;
}
}

测试读取结果:

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享