1. 程式人生 > >Postman高階應用——序列傳參和動態傳參詳解

Postman高階應用——序列傳參和動態傳參詳解

來自:https://www.cnblogs.com/hong-fithing/p/7596342.html

Postman是一款功能強大的網頁除錯與傳送網頁HTTP請求的Chrome外掛

用Postman做介面測試的時候,要把多條用例一起執行,就需要把用例連線起來,一次性執行

目錄

序列傳參

動態傳參

其次獲取access_token

介面呼叫說明:

https請求方式: GET,

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET輸入appID和appsecret得到access_token,如下圖所示:

序列傳參

舉例:先獲取到access_token值,然後再檢視已建立的標籤

1.提取介面返回值

 在獲取access_token的介面中,Tests下輸入如下程式碼:

let json = JSON.parse(responseBody);//宣告一個變數json,將JSON返回Body裡面的值解析並給變數json
tests["a"] = json.expires_in ===7200;//設定一個斷言
pm.globals.set("token", json.access_token);//獲取json裡面的access_token的值給token,執行一次就更新一次,並將token值設定為全域性變數

操作如下圖所示:

2.將提取到的返回值作為下一個介面的入參(檢視已建立的標籤)

http請求方式:GET(請使用https協議)

https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN

此處的access_token值就為上一步提取到的值,因為access_token值只能用2小時,為了避免麻煩,所以設定為全域性變數為{{token}}

操作如下圖所示:

執行一次便自動新增,設定為全域性變數後,每一次的token值都會發生改變,如下圖所示:

將這兩個介面用例儲存到同一資料夾下,並執行,如下圖所示:

執行後的結果如下圖所示:

動態傳參

做自動化測試時,有些介面不適合把引數寫死,所以就需要動態傳遞引數

動態傳參有三種實現方式:

1.Postman有以下內建變數,適合一次性使用

    ①{{$guid}}//生成GUID    ② {{$timestamp}}//當前時間戳    ③{{$randomInt}}//0-1000的隨機整數2.引數依賴上一個請求的返回    上個請求的Tests裡提取引數存環境變數,這個請求裡用{{變數名}}取值3.引數每次都不同,但之後的斷言或別的請求裡可能還要用    在Pre-request Script裡寫程式碼處理,存為環境變數,引數裡用{{變數名}}取值舉例為百度介面,http://www.baidu.com/s?,請求方式為GET

實現方式一:

①{{$guid}}//生成GUID生成GUID值,操作如下圖所示:② {{$timestamp}}//當前時間戳時間戳是根據1970-01-01開始進行計算的,通過該方法獲取到的值,進行轉換後,就是當前的時間值

③{{$randomInt}}//0-1000的隨機整數

產生0-1000的隨機整數,可用於自動化使用者名稱操作,操作如下圖所示:

實現方式二:

和序列傳參方式一樣,此處不再複述

實現方式三:

在Pre-request Script裡寫程式碼處理,存為環境變數,引數裡用{{變數名}}取值Pre-request Script和Tests的區別:好比如TestNG裡面的用例與前置條件Pre-request Script是設定前置條件的,不能設定斷言,在執行Tests裡面的程式碼時,會先執行Pre-request Script裡面的程式碼Tests可以設定斷言,提取返回值等

因此,存為環境變數,是在Pre-request Script裡寫程式碼,如下圖所示:

兩種格式都可惜,任選其一即可,程式碼如下所示:

postman.setGlobalVariable("value","test"+(parseInt (Math.random()*100)));//*100是指只取0~99之間的隨機值
pm.globals.set("value", "test"+(parseInt (Math.random()*100)));