做爲一款接口調試利器, 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妙執行一次, 知道訂單處理完成.
注意: