Postman高階應用——序列傳參和動態傳參詳解
阿新 • • 發佈:2019-01-04
來自: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)));