postman在请求前发送请求

做接口测试过程中,有时候会遇到接口关联的问题,比如接口请求必须用到上一个接口的响应,如果要做接口关联,可以再添加一个请求,把响应的结果提取出来生成变量的方式,当然还可以使用另一种方式,直接在请求的Pre-request Script使用Send a request发送请求,这种方法不需要单独写一个接口,直接在当前的接口执行前发送请求。发送请求的时候会涉及传参和不传参的情况,接下来看一下如何使用。

一、请求前发送的get请求不传参数

访问qq的网站之前我想先访问百度
image

  1. 在发送的请求下选择Pre-request Script选项,选择Send a request用来发送请求
    image

代码如下

// get请求不带参数,填写请求的地址
pm.sendRequest("https://www.baidu.com", function (err, response) {
    if(err){// if表示判断如果是错误,err对应function中的err
        console.log(err);// 在console的log中打印err
    }else{// else表示判断如果不是错误
        console.log(response);// 在console的log中打印响应response,response对应function中的response
    }
});

执行结果如下

image


二、请求前发送get请求带参数

代码如下

// get请求带参数,填写请求的地址后面拼接请求的参数,参数名=值,多个参数之间以&拼接
pm.sendRequest("https://www.baidu.com?name=lucy&age=1", function (err, response) {
    if(err){// if表示判断如果是错误,err对应function中的err
        console.log(err);// 在console的log中打印err
    }else{// else表示判断如果不是错误
        console.log(response);// 在console的log中打印响应response,response对应function中的response
    }
});

执行结果如下

image


三、请求前发送post请求参数传递x-www-form-urlencoded

post请求中的x-www-form-urlencoded参数传递的方式实际也是拼接在请求的url中

代码如下

// post请求传递参数application/x-www-form-urlencoded,填写请求的地址后面拼接请求的参数,参数名=值,多个参数之间以&拼接

var re = {// 定义re变量用来存放请求相关的数据,请求url,method,header
    url:"http://www.ndtester.com:8084/loginApi?userName=andy&password=123456",// 请求的地址
    method:"post",// 请求的方法
    header:{"Content-Type": "application/x-www-form-urlencoded"}// 请求的头部(包含了传递参数的方式)
}

// 在发送请求的pm.sendRequest中的re表示上方定义的请求
pm.sendRequest(re, function (err, response) {
    if(err){// if表示判断如果是错误,err对应function中的err
        console.log(err);// 在console的log中打印err
    }else{// else表示判断如果不是错误
        console.log(response.json());
        // 在console的log中打印响应response.json(),response.json()表示打印响应的JSON数据,返回的是JSON可使用此方法
    }
});

执行结果如下

image


四、请求前发送post请求参数传递application/json

传递的数据格式是application/json格式

代码如下

// post请求传递参数application/json,传递的数据是json格式的

var re = {// 定义re变量用来存放请求相关的数据,请求url,method,header,body
    url:"http://127.0.0.1:9090/login",// 请求的地址
    method:"post",// 请求的方法
    header:{"Content-Type": "application/json"},// 请求的头部(声明传递参数的方式是application/json)
    body:{// 请求的正文部分
        mode: 'raw',// 声明传递的数据是以raw格式
        raw: JSON.stringify({"username": "admin","password": "123456"})// 传递的JSON数据写到JSON.stringify()的方法中
    }   //JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个JSON字符串
}

// 在发送请求的pm.sendRequest中的re表示上方定义的请求
pm.sendRequest(re, function (err, response) {
    if(err){// if表示判断如果是错误,err对应function中的err
        console.log(err);// 在console的log中打印err
    }else{// else表示判断如果不是错误
        console.log(response.json());
        // 在console的log中打印响应response.json(),response.json()表示打印响应的JSON数据,仅返回的是JSON使用此方法
    }
});

执行结果如下

image


注:如果要提取请求的相关的数据,可以在else中使用对应的方法提取响应的数据,比如把响应的数据生成环境变量
代码如下

// post请求传递参数application/json,传递的数据是json格式的

var re = {// 定义re变量用来存放请求相关的数据,请求url,method,header,body
    url:"http://127.0.0.1:9090/login",// 请求的地址
    method:"post",// 请求的方法
    header:{"Content-Type": "application/json"},// 请求的头部(声明传递参数的方式是application/json)
    body:{// 请求的正文部分
        mode:'raw',// 声明传递的数据是以raw格式
        raw: JSON.stringify({"username": "admin","password": "123456"})// 传递的JSON数据
    }   //JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个JSON字符串
}

// 在发送请求的pm.sendRequest中的re表示上方定义的请求
pm.sendRequest(re, function (err, response) {
    if(err){// if表示判断如果是错误,err对应function中的err
        console.log(err);// 在console的log中打印err
    }else{// else表示判断如果不是错误
        console.log(response.json());
        // 在console的log中打印响应response.json(),response.json()表示打印响应的JSON数据,仅返回的是JSON使用此方法
        da = response.json()// 把响应的JSON赋值给da
        pm.environment.set("name", da.data.name);// 把响应中json中的data中的name生成环境变量
    }
});

响应的结果如下,提取了返回的JSON中data的name生成的环境变量,在此接口访问的时候直接引用生成的变量名,形成了关联的关系

image

在请求需要用到该变量的时候,直接使用{{变量名}}引用该变量名
image

posted @ 2022-12-27 16:39  ll=ll  阅读(684)  评论(0编辑  收藏  举报