数据驱动(读取外部数据)
相同的测试脚本使用不同的测试数据,数据的改变从而驱动自动化的执行,最终引起测试结果的改变
步骤:
1.执行单条接口用例,观察请求、响应格式。方便编写断言及确定变量
// 接口返回数据
{
"code": 0,
"data": {
"province": "四川",
"city": "成都",
"sp": "联通"
}
}
2.在Tests中编写断言脚本
根据需求来编写脚本。通常会判断状态码是否为200
// 断言脚本
//验证每个手机号对应的返回数据中运行商信息是否和CSV文件中的一致
// eql()里面的 data 是 postman中自带的关键字,和响应值中的data无关
pm.test("验证每个手机号对应的返回数据中运行商信息是否和CSV文件中的一致",function(){
var jsonData = pm.response.json();
pm.expect(jsonData.data.sp).to.eql(data.mobileOperator);
})
3.创建测试数据,并保存到文件中
测试数据保存为CSV格式或者json格式。
测试数据必须保证正确
CSV文件最后不要留空行
postman会把CSV文件中所有非数值的值自动加上引号,所以在CSV文件中非数值的值不用添加引号来包裹。CSV中的变量名之间和变量值之间都需要用英文逗号隔开
// CSV文件数据
//1.字符串无需添加引号,在导入postman后,postman会自动添加
mobileNumber,mobileOperator
13012345678,联通
13812345678,移动
4.执行接口,循环调用测试数据
选择对应的测试集 – run collection – 设置循环次数、间隔、选择保存测试数据的文件 – 勾选需要运行的接口 – run
选择导入数据文件后,最好预览确认数据是否正确
5.验证结果
读取数据文件中的数据
方法:
1.在请求参数(请求行、请求头、请求体)中,使用数据文件中的数据
使用{{}}来包裹CSV文件的 字段名 或 json 文件中的 key
2.在代码(断言、请求前置脚本)中,使用数据文件的数据
借助postman中的关键字 data 点 CSV文件的 字段名 或 json 文件中的 key
案例
使用 http://cx.shouji.360.cn/phonearea.php?number= 接口来验证手机号的运营商
//手机测试数据的csv文件。必须保证正确
mobileNumber,mobileOperator
13012345678,联通
13812345678,移动
18912345678,电信
//在postman中的断言脚本
// 验证每个手机号对应的返回数据中运行商信息是否和CSV文件中的一致
// eql()里面的 data 是 postman中自带的关键字,和响应值中的data无关
pm.test("验证每个手机号对应的返回数据中运行商信息是否和CSV文件中的一致",function(){
var jsonData = pm.response.json();
pm.expect(jsonData.data.sp).to.eql(data.mobileOperator);
})
补充说明:
1.CSV文件的优缺点
优点:数据组织形式简单,适用于大量数据的场合
缺点:1.不支持bool类型数据(非数字值被postman读入后会自动添加"");2.不支持多参、少参、无参、错误参数的接口测试; 3.不支持复杂数据类型(嵌套字典、列表等)
2.JSON文件的优缺点
优点:1.支持bool类型;2.支持多参、少参、无参、错误参数的接口测试; 3.支持复杂数据类型
缺点:对于相同数据量,JSON文件的大小远大于CSV文件的大小