一、@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