背景信息
因工作需要,需要对某一接口批量插入600条数据,在postman尝试了两种方式,都实现了,因此这里做一个总结:
1.批量插入多条数据
方式一:用Postman的预请求脚本和环境变量功能来实现
思路:
- 封装请求体
pm.sendRequest发送请求
循环执行多次执行
//set up loop counter
var loopCount=3;
//loop to set up the request data
for(var i=0;i<loopCount;i++){
var req_body= {
"provinceCode": "350000",
"regionCode": "350000",
"unitName": "新增单位测试00"+i.toString()
}
console.log(req_body)
//set up request
var request = {
url:"http://xxx.xxx.xxx.xxx:9076/gaplatformweb-api/system/sys-unit/save",
method:"POST",
header:{
'Content-Type': 'application/json',
'Fftoken':"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJBUFAiLCJ1c2VyX2lkIjoiYWRtaW4tMTAuMjMzLjk3LjAiLCJpc3MiOiJTZXJxxxx2aWNlIiwiZXhwIjoxNjkxMDUxNDUyLCJpYXQiOjE2OTA5NjQ0NTJ9.J_seGBl5cElzkyDllWmE0igGYaAQHhCuZs1uib2V1Us",
},
body:{
mode:'raw',
raw:JSON.stringify(req_body)
}
};
//send request
pm.sendRequest(request,function(err,response){
var res = pm.response.json();
console.log(res)
});
};
方式一:Postman的Collection Runner功能来实现
思路:
请求体如下,插入的数据,前两个是读取库中的数据,存在联动关系,因此是固定的值,但是第三个参数是个动态值,并且需要保证唯一性,因此可以使用postman的动态参数来实现
{
"provinceCode": "350000",
"regionCode": "350000",
"unitName": "新增单位测试"
}
-
Postman的内置动态参数
{{$timestamp}} 生成当前时间的时间戳。
{{$randomInt}} 生成0-1000之间的随机数
{{$guid}} 生成速记GUID字符串
{
"provinceCode": "350000",
"regionCode": "350000",
"unitName": "Christina{{$randomInt}}"
}
{
"provinceCode": "350000",
"regionCode": "350000",
"unitName": "Christina{{$timestamp}}"
}
{
"provinceCode": "350000",
"regionCode": "350000",
"unitName": "Christina{{$guid}}"
}
Collection Runner来循环执行
-
自定义动态参数
用Postman的预请求脚本和环境变量功能来实现,在请求体中使用{{times}}调用写入环境变量的动态参数
//手动的获得时间戳
var times = Date.now();
//设置为全局变量
pm.globals.set("times",times);
-
动态参数断言
1、内置动态参数:无法做断言
因为返回的类型不一样,断言结果会始终失败
2、自定义动态参数(全局变量):可正常断言
取出写入全局变量的变量
pm.globals.get("times")
pm.expect(pm.response.text()).to.equals("xxxxxxx"+pm.globals.get("times"))
2.批量删除插入的数据
思路:
做删除的话,需要去查询列表,通过数据的id去删除,删除的时候,请求体是个列表,所以需要查询出所有数据,然后把需要的Id放到列表中,存入环境变量,删除接口调用这个变量去删除
删除列表截图
查询接口返回值截图
根据查询接口来获取需要的删除列表
// 解析接口返回的 JSON 数据
var responseData = JSON.parse(responseBody);
//定义要删除的数据的id列表
var delList=[]
// 遍历用户数据
for (var i = 0; i < responseData.data.records.length; i++) {
var user = responseData.data.records[i];
//把接口中unitName包含"Tester"的数据提取出unitUuid存放到列表中
if (user.unitName.includes("Tester")) {
delList.push(user.unitUuid);
console.log(delList);
}
}
pm.environment.set("delList",JSON.stringify(delList))
postman调用环境变量值