做为一款接口调试利器, Postman的更新迭代速度很快, 不断加入了不少新的功能.使的api设计,测试,监控, Mock,以及团队协做更加方便.json
在遇到有接口依赖的状况, 咱们每每须要接口按顺序执行, 以前能够经过在一个请求的Pre-request Scripts中使用pm.sendRequest发送所依赖的请求来实现, 新版本Postman在Run Collection中咱们能够修改请求的执行顺序, 以下图:
这里将全部的接口放到一个Collection请求集合中, 在"百度获取token"这个请求的Tests脚本中中,将access_token存为全局变量, 以供"百度orc"使用.
咱们能够直接拖动, 改变默认Collection的执行顺序, 也能够选择不运行哪些请求.api
除了在Run Collection时调整顺序外,咱们还能够经过postman.setNextRequest("同Collection下保存的请求名");
来手动控制请求的跳转.异步
以下图, 新建一个Collection, 新增A, B, C, D, E, F 5个请求, 在请求A的Tests脚本中添加函数
postman.setNextRequest("D");
以使A执行完下一个执行D请求.
从上图咱们能够看出, 实际上跳过了请求B, C, 直接跳转到D请求.oop
注意: 若是D请求在运行时未勾选, 则只会运行A请求post
一般状况下,咱们可使用if判断来控制流程跳转, 好比, 经过判断A请求是否成功来分别跳转到D请求或B请求.测试
var jsonData = pm.response.json() if(jsonData.args.a == 'a'){ postman.setNextRequest("D"); } else{ postman.setNextRequest("B"); }
咱们能够经过在最后一个请求中使用postman.setNextRequest(), 以前的请求, 来完成一个循环, 好比在F请求使用postman.setNextRequest("A"), 就会无限循环的执行下去, 以下图所示:
设计
通常来讲, 循环中必定要设置停止条件, 通常经过if判断是否postman.setNextRequest()来控制是否继续循环.3d
咱们能够用一个postman.setNextRequest指向自身的请求来完成异步接口的轮询.调试
http://115.28.108.130:5000/api/order/create/? user_id=123&goods_id=123&num=2&amount=20.0
这是一个异步接口, 接口会返回一个order_id用于查询订单结果. 咱们在Tests中,将获取到的order_id存为全局变量以供下一个接口使用, 以下图所示:
var jsonData = pm.response.json() pm.globals.set("order_id", jsonData.order_id);
http://115.28.108.130:5000/api/order/get_result/?order_id={{order_id}}
这是一个获取订单接口, 订单不肯定多长时间建立好, 若是订单在建立过程当中则返回"{}", 若是建立成功则返回:
{ "amount": "20.0", "goods_id": "123", "num": "2", "user_id": "123" }
咱们在Tests脚本中设置轮询条件, 下个请求指向自身以下:
if(pm.response.text() == "{}\n"){ postman.setNextRequest("获取订单结果"); }
Run Collection 咱们发现, "获取订单结果"请求被快速的请求, 直到中止, 实际上咱们还须要设置一个轮询间隔, 咱们将postman.setNextRequest放到一个函数种,而后用setTimeout来延迟必定时间运行.
function loop(){ postman.setNextRequest("获取订单结果") } if(pm.response.text() == "{}\n"){ setTimeout(loop, 5000); // 设置间隔5s }
以下图, "获取订单结果"请求会5妙执行一次, 知道订单处理完成.
注意: