TestNG中使用DataProvider有如下好处:
1. 在执行用例的时候,dataProvider迭代中的每组数据都是作为一个用例执行,实现数据驱动执行
2. 在测试数据有规律的情况下,免去了在XML中添加测试数据的烦恼,直接将测试数据放到dataProvider中即可
其中dataProvider作为数据提供者,只能返回Object[][]和Iterator
当测试数据包含类对象来达到数据驱动,使用DataProvider的Iterator
testdata.txt
{ "name":"test1",
"url":"/v1/test",
"method":"post",
"body":
{
"platformCode": "10001",
"productCode": "10002",
"userId": "123456"
}
};
{
"name":"test2",
"url":"/v2/test",
"method":"post",
"body":
{
"platformCode": "10003",
"productCode": "10004",
"userId": "211234"
}
}
TestCase.java文件
/*
* 接口测试中,接口的信息封装成一个对象
*/
@Data
public class TestCase {
// 接口name
private String name;
// 接口url
private String url;
// 接口的请求方式
private String method;
// 接口的请求体
private Map body;
}
测试数据源:
/**
* 从外部txt文件中读取测试数据
* @param MethodName
* @return
*/
@DataProvider(name="iterator")
public Iterator
测试方法:
根据测试方法执行对应的测试数据,如test1只运行其对应的测试数据。
@Test(dataProvider="iterator")
public void test1(TestCase testcase){
System.out.println(testcase.toString());
}