一、postman强大的脚本功能

Postman包含一个基于Node.js的强大功能,可以让您在发出请前后添加动态行为。这样,您就可以编写测试套件、构建可以包含动态参数的请求、在请求之间传递数据等等。

Pre-request:请求前进行相应参数的设置(或进行前置数据处理)

Test:对请求后的Response结果进行断言(主要是响应status、响应Header及响应Body)

【Postman】8 Postman pre-requests的使用_postman

二、脚本的执行顺序

在Postman中,单个请求的脚本执行顺序如下:

1、与请求关联的预请求脚本(Pre-request Script)将在发送请求之前执行

2、发送请求

3、发送请求后,将执行与请求关联的测试(test)脚本

【Postman】8 Postman pre-requests的使用_postman_02

三、 pre-requests的使用

在请求发送之前可以进行的操作,我们以下面两个小案例说明:

1、可以为请求获取请求标头中的时间戳,使用从函数返回的值设置环境变量(也可以直接对环境变量进行获取及修改)

【Postman】8 Postman pre-requests的使用_postman教程_03

然后,您可以 通过Postman的header标签中添加 timestampHeader变量{{timestampHeader}},发送请求后,将执行您的请求前脚本,并发送timestampHeader的值代替{{timestampHeader}}。

【Postman】8 Postman pre-requests的使用_postman教程_04

《2021测试开发各大机构最新全套教程》:https://pan.baidu.com/s/17jkyGn-Wm-zC6QQLkWjrsw 
  提取码:o94n 

2、在发送请求之前先发送另外一个请求

案例一:以信互协同系统为例

前面文章中已经使用过,分别做了登录接口及文件上传接口的请求,文件上传接口必须要使用登录的cookies信息才能实现。

参见前面两篇文章:

捉虫布道人:【Postman】4 Postman发送post请求-x-www-from-urlencoded使用​zhuanlan.zhihu.com【Postman】8 Postman pre-requests的使用_postman教程_05捉虫布道人:【Postman】5 Postman 发送post请求-form data格式(文件上传)​zhuanlan.zhihu.com【Postman】8 Postman pre-requests的使用_postman教程_05

此处我们就可以在上传文件接口请求的pre-request script中添加脚本,实现发送请求的功能,该登录请求的content-type为x-www-form-urlencoded,具体实现见下图:

【Postman】8 Postman pre-requests的使用_postman_07

var paramLogin = {
    "url":"http://10.9.21.207:8088/xinhu/index.php?a=check&m=login&d=&ajaxbool=true&rnd=81328",
    "method":"POST",
    "body":{
        "mode":"urlencoded",
        "urlencoded":"rempass=0&jmpass=false&device=1620374519746&ltype=0&adminuser=YWRtaW4:&adminpass=YTg5ODM5ODM:&yanzm="
    }
}

//一个HTTP请求的报文已经打包好了
//现在要通过sendRequest方法把请求发出去、并获得返回的响应结果
pm.sendRequest(paramLogin, function (err, response) {
    console.log(response.json());
});

案例二:也可以发送请求头字段content-type为application/json的HTTP请求。

可以参考这篇文章,实现请求数据为json格式的实现。

捉虫布道人:【Postman】6 Postman 发送post请求-Json格式​zhuanlan.zhihu.com【Postman】8 Postman pre-requests的使用_postman教程_05

【Postman】8 Postman pre-requests的使用_postman_09

var paraZhu = {
    url:"https://b.zhulogic.com/designer_api/account/login_quick",
    method:"POST",
    header:"Content-Type:application/json",
    body:{
        mode:"raw",
        raw:JSON.stringify({
                "channel": "zhulogic",
                "code": "1233456",
                "key": "980400ef-29fb-4a73-9260-63ad20cd5c8b",
                "messageType": 3,
                "phone": "",
                "registration_type": 1,
                "unionid": ""
            }
        )
    }
}

//一个HTTP请求的报文已经打包好了
//现在要通过sendRequest方法把请求发出去、并获得返回的响应结果
pm.sendRequest(paraZhu, function (err, response) {
    console.log(response.json());
});

此处仅仅抛砖引玉,pre-request script是一个很强大的功能,大家可以慢慢挖掘,但是作为一个测试工程师,一般使用前面讲到的两种场景就可以啦。