postman常用test語句
阿新 • • 發佈:2020-10-22
- var data = JSON.parse(responseBody);---這個我沒用過,先做個記錄
JSON.parse()方法,把json字串轉化為物件。parse()會進行json格式的檢查是一個安全的函式。 如:檢查json中某個陣列元素的個數(這裡檢測programs的長度)
var data = JSON.parse(responseBody);tests["program's lenght"] = data.programs.length === 5; - 1.設定環境變數 postman.setEnvironmentVariable("key", "value");// postman.setEnvironmentVariable("orgName",jsonData.content.userInfo.orgName);指定到某一個路徑節點的key
- 2.設定全域性變數 postman.setGlobalVariable("key", "value");
- 3.檢查response body中是否包含某個string
- tests["Body matches string"] =responseBody.has("string_you_want_to_search");
- 4.檢測JSON中的某個值是否等於預期的值,返回碼
- tests["returnNO=0000"] = jsonData.returnNo ==='0000';
- 5.轉換XML body為JSON物件 var jsonObject = xml2Json(responseBody);
- 6.測試response Headers中的某個元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //getResponseHeader()方法會返回header的值; - 7.設定header裡的資料為變數
- var jsonData = JSON.parse(responseBody);
- var data = postman.getResponseHeader("Authorization");pm.environment.set("Authorization",data);
- 8.伺服器狀態碼校驗
- tests["Status code is 200"] = responseCode.code === 200;
- 9.設定超時時間,超過這個時間介面會報錯
- tests["Response time is less than 1500ms"] = responseTime < 1500;
- 10.和上個介面比對結果--校驗當前介面的返回是否和上個接口裡取到的引數一致
- //tests["比對結果"] = jsonData.content[1].schoolName === pm.environment.get("schoolName");//只要返回的節點下有這個變數值--推薦一個比較好用的檢視json格式的網站:http://www.bejson.com/jsonviewernew/可以輕鬆檢視層級和節點,效果是這樣的:
tests["比對結果"] = responseBody.has (pm.environment.get("schoolName")); //只要返回body裡有這個變數值 - 11.校驗介面返回是否有資料--我的程式設定的是如果當前沒有資料,則只返回content[]
- tests["獲取第一個學生資訊結果"] = jsonData.content.items[0];//所以這句斷言可以校驗,如果content裡還有資料,則視為返回不為空
- 12.兩種返回校驗,只要返回其中任何一個視為通過,否則報錯
- tests["returnNO=0000|9999"] = jsonData.returnNo ==='0000' || jsonData.returnNo ==='9999'; 返回碼
- tests["returninfo=oh yeah,通過了|票券無法使用"] = responseBody.has("oh yeah,通過了")||responseBody.has("票券無法使用");string
- 13.//暫時常用的就這些,還有一個思路要記下,購買流程時記得把下單時產生的訂單號設定為環境變數,儲存起來,這樣結算介面的時候使用這個變數來保證每次都是產生的新訂單,結算可以成功!否則只能結算一次,下次再結算可能會提示支付失敗,因為已經支付成功過了
- 14.pm.globals.set("type",parseInt(4*Math.random())+1);//針對不同型別的課程型別
設定一個1到4的隨機整數,欄位名是type,parselnt是強制轉換為整數 - 15.postman遇到unicode的返回時如何校驗?如果後臺程式碼是php的很可能會有這個問題,html或xml是unicode的格式的,轉換成json又是中文的,為難的地方是使用var jsonObject = xml2Json(responseBody);這句話並沒有用,沒有校驗到相應的中文返回;然後想了兩個迂迴的方法://postman.setEnvironmentVariable("message",jsonData.message); 先把unicode的返回欄位設定為變數,這個變數值儲存時會為中文(至少我這邊是這樣子的)
//tests["任務狀態"] = jsonData.message === pm.environment.get("message");然後拿這個message的值的你變數時儲存的值對比,一致則為pass,但是這樣有一個問題,因為變數的獲取和對比都是一個返回裡,肯定是每次都pass的,所以要結合code返回一起檢視 - 第二種:tests["任務狀態"] = jsonData.message === '任務狀態或者報名狀態已變更' ---這個比較直觀了,不需要設定環境變數,直接在正確的返回寫死了,然後拿返回欄位的key值去校驗,但這個也有個地方需要優化,就是當你的返回碼不同但是並不屬於報錯時,介面返回的key肯定也不一樣,所以靈活點的方法就是加個if,如果返回300則對比下面這段話,如果返回其它的而對比其它相應的返回
轉載於:https://my.oschina.net/EvanDev/blog/2980173