在之前的文章中介绍过postman中的两个脚本——pre-request script或test script。 (pre-request script详细介绍、Test script详细介绍)在这两个位置不仅仅是可以对请求参数或是返回结果进行处理,甚至可以在这两个位置请求接口,并使用返回值。这是个非常好用的功能。比如请求购买前需要先通过登录接口获取token,这种情况下可以直接在pre-request script请求登录接口,并将返回值中的token设置为接口请求参数

文章目录

一、pm.sendRequest() 方法二、在脚本中进行GET请求三、在脚本中进行POST请求1. body为raw模式2. body为x-www-form-urlencoded模式3. body为form-data模式4. body为xml模式

四、将脚本中接口返回值设置为变量附录:postman系列文章目录

一、pm.sendRequest() 方法

postman的脚本中,使用pm.sendRequest()方法进行接口请求,格式如下:pm.sendRequest("https://postman-echo.com/get", function (err, response) {

console.log(response.json());

});

pm.sendRequest() 总共传入两个参数:

第一个是接口请求参数,可以直接是URL(这种情况默认发送get请求),也可以使用JSON格式提供完整的请求配置,包括标头、方法、正文等第二个参数是接口返回结果,可以在控制台打印出需要的数据,也可以在此对返回值进行处理。 发送请求之后,脚本内的请求也会在console中打印,颜色为稍浅的灰色。 (之间专栏也有介绍过控制台,文章地址:console控制台) 与正常的接口请求的日志放在一起可以看到明显的颜色区分

二、在脚本中进行GET请求

如果只需要使用到URL进行get请求,可以直接使用填入URL,可以直接使用上述的示例

将"https://postman-echo.com/get" 替换为需要请求的接口URL即可: pm.sendRequest("https://postman-echo.com/get", function (err, response) {

console.log(response.json());

});

如果需要用的header,则可以将请求参数填入json,如下:

定义一个const变量,按格式填入参数 const getRequest = {

url: 'https://postman-echo.com/get',

method: 'GET',

header: {

'Content-Type': 'application/json',

'X-Foo': 'bar'

},

};

再将参数代入pm.sendRequest() 方法中,完整代码: const getRequest = {

url: 'https://postman-echo.com/get',

method: 'GET',

header: {

'Content-Type': 'application/json',

'X-Foo': 'bar'

},

};

pm.sendRequest(getRequest, function (err, response){

console.log(response.json());

});

发送请求后可以从console中看到脚本中的请求带有getRequest 变量中设置的请求头。

三、在脚本中进行POST请求

POST请求与GET相比更复杂一些。不仅需要传body,body的模式也需要设置

1. body为raw模式

同样也是将参数填入const变量中body中设置 mode设置为raw,并且raw参数需要使用字符串上传

const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: {

'Content-Type': 'application/json',

'X-Foo': 'bar'

},

body: {

mode: 'raw',

raw: JSON.stringify({ key: 'this is json' })

}

};

pm.sendRequest(postRequest, function (err, response){

console.log(response.json());

});

请求之后可以从console中看到,脚本中发送了post请求,并带有postRequest 变量中设置的body

2. body为x-www-form-urlencoded模式

body中设置 mode设置为“urlencoded”,并且参数需要以urlencoded格式上传const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",

body: {

mode: 'urlencoded',

urlencoded: "key=this is key&key2=this is key2"

}

};

pm.sendRequest(postRequest, function (err, response) {

console.log(response.json());

})

点击发送接口请求从console中查看结果,可以看到在当前接口请求之前,运行pre-request script时发送了post请求,并带有postRequest 变量中设置的body

3. body为form-data模式

body中设置 mode设置为“formdata”并且formdata参数的格式需要以如下格式填写:[{key: "key1",value: "value1"},{key: "key2",value: "value2"}]

完整代码如下:const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: "Content-Type: multipart/form-data",

body: {

mode: 'formdata',

formdata: [{key: "key1",value: "value1"},{key: "key2",value: "value2"}]

}

};

pm.sendRequest(postRequest, function (err, response) {

console.log(response.json());

})

发送接口后,从console中查看结果,脚本中请求的参数使用了代码里设置的变量

4. body为xml模式

body中设置 mode设置为“raw”,并且raw参数内上传xml的代码,但需要转为字符串形式。完整代码如下:const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: "Content-Type: application/xml",

body: {

mode: 'raw',

raw: 'value'

}

};

pm.sendRequest(postRequest, function (err, response) {

console.log(response.json());

})

发送接口之后,同样可以从console中查看结果

四、将脚本中接口返回值设置为变量

文章的上半部分都在介绍如何在脚本中发送请求现在来介绍,请求结果返回之后如何使用在专栏之前的文章中介绍过postman中的变量,变量配合脚本使用,可以实现接口之间的参数传递 (postman中的变量-详细介绍)这里通过参数传递来实现脚本中请求接口的运用在之前的例子中,脚本中请求接口只有,只是单纯的将返回值打印在console控制台:const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: "Content-Type: multipart/form-data",

body: {

mode: 'formdata',

formdata: [{key: "key",value: "test_value"}]

}

};

pm.sendRequest(postRequest, function (err, response) {

console.log(response.json()); // 将返回值打印在console控制台

})

可以将接口返回值设置为全局变量或是环境变量,然后在接口请求中引用变量。以创建全局变量举例,使用pm.globals.set(“variable_key”, “variable_value”)方法创建全局变量。修改脚本代码如下:const postRequest = {

url: 'https://postman-echo.com/post',

method: 'POST',

header: "Content-Type: multipart/form-data",

body: {

mode: 'formdata',

formdata: [{key: "key",value: "test_value"}]

}

};

pm.sendRequest(postRequest, function (err, response) {

console.log(response.json());

pm.globals.set("test", response.json()["form"]["key"]);

})

修改点:在接口请求之后,将请求值设置为一个全局变量,变量的key为“test”pm.globals.set("test", response.json()["form"]["key"]);

请求头中引用变量“test” 发送接口因为脚本写在pre-request script标签页下,所以脚本中的接口会先请求根据脚本中的返回值,“response.json()[“form”][“key”]”最后等于"test_value"之后,发起当前的接口请求可以看到请求头中的“test”参数的值为"test_value",证明脚本运行成功了

附录:postman系列文章目录

零基础入门接口功能测试教程-目录

————————————————————————————————— postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】 有需要可点击文章下发二维码,前往领取~

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: