postman 常用脚本

发布时间 2023-07-26 12:01:57作者: 好好学习,腾云驾雾
1.登录成功之后,在header中获取cookie,并设置成环境变量
//获取cookie值
var jsondata = postman.getResponseHeader("set-cookie");
console.log(jsondata)
//设置成环境变量
data = jsondata.split(";")[0];
data = data.split("=")
console.log(data)
postman.setEnvironmentVariable("Cookie_name",data[0]);
postman.setEnvironmentVariable("Cookie_value",data[1]);

 
2.操作时间,并将时间设置为环境变量
var moment = require('moment'); 
var ctime = moment().format(" YYYYMMDDHHmmss");
var cjia1=moment(new Date().getTime()+3600*1000*24).format('YYYY-MM-DD HH:mm')
var cjia2=moment(new Date().getTime()+3600*1000*24).format('YYYY-MM-DD')
var cjia3=moment(new Date().getTime()+3600*1000*24*3).format('YYYY-MM-DD HH:mm')

pm.environment.set('name', ctime); 
pm.environment.set('zhuanghuo', cjia1); 
pm.environment.set('sendtime', cjia2); 
pm.environment.set('xiehuo', cjia3); 
 
 
3.定义列表,并随机获取列表中的数据,设置为环境变量
var arr = ['管理员', '李新','赵本存','赵本林','高伟人','齐丽娅','袁志佳','唐作田','邓树健','韩丽洁','刘大磊'];
var index = Math.floor((Math.random()*arr.length));
postman.setEnvironmentVariable('People',arr[index]);
 
4.断言
(1)响应为text格式的断言
pm.test("测试某个页面的功能是否正常", function () {
 
var body = pm.response.text();
var title =  body.match(/<提取字段之前的内容>(.*?)<\/提取字段之后的内容>/)[1];
var a='预期值'
pm.expect(title).to.eql(a);
});
 
 
 
(2)响应为json格式的断言
pm.test("app登录", function () {
    c=pm.response.json()
    b=c['code']
    username=c['data']['username']
    tests[username]=true
  //设置环境变量,下一个接口调用
    pm.environment.set("username1", username);
    pm.expect(b).to.eql(200)
});
(3)对结果进行分析判断
pm.test("添加采购单", function () {
var jsonData = pm.response.json();
if(jsonData.data[0].msg="添加采购单成功!"){
    pm.expect(jsonData.data[0].success).to.eql(true);

}
else if (jsonData.data[0].msg="库存不足!"){
  console.log('不存不足')

}
else{
 pm.expect(jsonData.success).to.eql(true);
}
});
5.获取响应body中的最大值(最大id)
//提取出响应体中所有的id
function value(x){
var body = pm.response.text();
supplyid1=String(body.match(x));
supplyid = String(supplyid1.match(/\d+/g));
s=supplyid.split(",");
return s
}
//遍历列表,并提取最大值
function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return
    }
    var array =[];
    for(var i = 0; i < arr.length; i++) {
            if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
                    array.push(arr[i]);
              }
    }
    // tests[array]=true    
    a=Math.max.apply(null,array);
    tests[a]=true     
    return a
}
 
var arr=value(/"id":\d+,"/g)
pm.environment.set("shigognduiId", unique(arr));
6.随机生成时间戳
 
var times = Date.now().toString();
pm.environment.set('timestamp', times); 
7.预置脚本中,提前发送请求(post)
//获取collection中的变量
url =    pm.collectionVariables.get("url_ynl");
 
function denglu(phone){
    const request1 = {
    url:url+'path',
    method: 'POST',
    header: 'application/x-www-form-urlencoded; charset=UTF-8',
    body: {
        mode: 'urlencoded',
 
    urlencoded:'mobile_number='+phone+'&mobile_code=888&session_key=&AutoLogin=true'
  
    }
}; 
    pm.sendRequest(request1, function (err, response) {
        console.log(response.json());
});
}
denglu('15555555555')
8.循环发送get请求
for(i=0;i<=Pagecount;i++){
   
    function denglu(){
    const request1 = {
    url:url+'pathList/'+i,
    method: 'GET',
    // 请求体
   
}; 
    pm.sendRequest(request1, function (err, response) {
        a= response.text();
        console.log(a)
});
}
}
9.生成最大最小值,设置环境变量
function getRandomInt(min,max){
                var num= Math.floor(Math.random()*(max-min+1))+min;
                return num                
            }
pm.environment.set("randomnum", getRandomInt(5,18));