欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Postman:在不同接口之间传递数据——Pre-request Script(四)

程序员文章站 2022-04-10 14:37:27
...

postman提供了Pre-request Script和Tests,在这两个标签中可以编写js代码辅助测试。先前博文已经介绍了Tests标签如何添加断言以及postman中的环境变量,该篇博文主要介绍如何在Pre-request Script和Tests标签中添加合适的脚本提取我们需要的数据。

        场景一:假设需要测试两个接口,接口A负责生成任务信息,且返回一个任务号;接口B负责删除任务,且就是根据任务号来删除,并且删除后该任务号便无法再次使用。

        为解决以上场景可以考虑每次在测试接口B之前都会先调用接口A来生成一条任务号,然后把数据传给B,这样即使更换数据库也可能灵活进行测试,不需要再提前准备数据。

1.提取接口A生成的任务号。

        首先该请求的响应内容如下,为响应为json格式的字符串。

Postman:在不同接口之间传递数据——Pre-request Script(四)

在Tests标签中编写如下脚本:

var JsonData = JSON.parse(responseBody);            //定义一个变量,并且将请求返回的内容赋给该变量
pm.environment.set("task_id", JsonData.task_id);    //定义一个环境变量task_id,且把响应内容中的task_id值赋值给该变量
console.log(JsonData.task_id);                      //利用postman的console.log()来查看环境变量的值

postman的输出控制台,可以在这里查看脚本运行情况,进行调试。发送这个请求,可以在console中查看运行情况。

Postman:在不同接口之间传递数据——Pre-request Script(四)

2.在接口B中调用环境变量task_id。

Postman:在不同接口之间传递数据——Pre-request Script(四)

        如上,只要每次在执行接口B前先执行接口A则不必需要担心地址流水号会失效,达到任务号参数化的目的。

        场景二:假设需要测试三个接口,接口A负责生成任务信息,且返回一个任务号;接口B负责删除任务,且就是根据任务号来删除,并且删除后该任务号便无法再次使用;接口C负责查询任务信息,且也是根据任务号来进行查询。

        为解决以上场景,我们可以在执行接口B和接口C之前,各自先调用一下接口A,生成任务号仅供自己使用。

1.切换到Pre-request Script标签,在右侧代码片段中可以找到一个Send a request,这是postman提供的发送请求的代码片段。

Postman:在不同接口之间传递数据——Pre-request Script(四)

postman封装的sendRequest()方法默认发送的是get请求。若需要发送post请求需要修改如下:

var data ={//定义接口A的body};            
const echoPostRequest = {
    url:'http://XXX.XXX.XXX',           //请求url
    method:'POST',                                                     //请求方法的POST
    //header:'',定制请求头信息(要传json格式的数据这里定义请求头为Content-Type:application/json)
    body:{                                                             //post请求的body参数,有则传,无则不用传
        mode:'raw',
        raw:JSON.stringify(data)                                       //如果有body参数的话,把data传进来,JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个JSON字符串,若参数类型是application/x-www-form-urlencode,传值例如:raw: 'id=123&code=28'
    }
};
pm.sendRequest(echoPostRequest, function (err, response) {
    console.log(response.json());
    pm.environment.set("select_id", response.json().task_id);             //定义一个环境变量del_id,并将前置请求响应中的task_id赋给它
    console.log(response.json().task_id);                              //打印前置请求生成的任务号
});

发送这个请求,可以在console中查看运行情况:Postman:在不同接口之间传递数据——Pre-request Script(四)

2.在接口C中调用环境变量select_id。

Postman:在不同接口之间传递数据——Pre-request Script(四)

上面介绍的即是经常讲到的参数化过程,掌握了这些技巧,基本上便可以用postman很好地完成接口测试。

相关标签: Postman