PostMan接口測試實用小點
1. 接口測試變量存取操作
在Postman中有很多地方可以存儲一些變量,這裏只介紹經常使用的環境變量.變量設置後,在UI界面可以通過{{變量名}}
獲取到對應值.
在環境變量中配置變量url = https://ct.ctrip.com
在請求地址欄配置 {{url}}/SwitchAPI/Order/Ticket/
最終發起地址爲https://ct.ctrip.com/SwitchAPI/Order/Ticket/
在環境變量中配置變量
appkey=test_地心俠士_key
appsecurity=test_地心俠士_sec
請求正文(Body-> raw)配置如下JSON
{
"appSecurity":"{{appsecurity}}",
"appKey":"{{appkey}}"
}
最終發起時,請求正文會替換成如下內容
{
"appSecurity":"test_地心俠士_key",
"appKey":"test_地心俠士_sec"
}
所以,我們可以通過改變環境變量值,來修改請求相關的內容,下邊一段代碼是獲取當前環境變量值,並拼接一個字母A,在重新放回環境變量中
// ahutor 地心俠士
var env_appkey = pm.variables.get("appsecurity");
env_appkey = env_appkey +"A";
pm.environment.set("appsecurity", env_appkey);
2 常用接口測試
2.1 先獲取Ticket再獲取業務數據
這種情況,就是利用環境變量做中轉,在獲取到Ticket以後,解析響應數據,並把最新的token存迴環境變量中.
A. Ticket請求正文配置
{
"appSecurity":"{{appsecurity}}",
"appKey":"{{appkey}}"
}
A. Ticket請求響應信息
{
"Status": {
"Success": true,
"ErrorCode": 0,
"Message": "調用成功。"
},
"Ticket": "6629ebc42653b0e43449b962"
}
A. PostMan Tests腳本區域直接編寫js腳本,存儲Ticket響應信息
// ahutor 地心俠士
var jsonData = pm.response.json();
pm.environment.set("Ticket", jsonData.Ticket);
B. 業務接口請求正文配置,這裏會使用上一個接口的Ticket
{
"Auth": {
"AppKey": "{{appkey}}",
"Ticket": "{{Ticket}}"
},
"OrderID": "31015905161",
"JourneyNo":"",
"SearchType": "1"
}
2.2 業務請求動態添加簽名
很多接口爲了防止,請求數據被篡改,都要求在請求參數中添加簽名參數.這些簽名值都有一定算法處理.這個時候也可用通過環境變量,結合Pre-request Script實現
需要添加簽名正文配置
{
"approveScenario": "",
"corpId": "地心俠士",
"orderId": "312056399256",
"orderStatus": "Paid",
"productType": "HotelMember",
"sign": "{{sign}}"
}
請求發起前腳本,修改環境變量值
// ahutor 地心俠士 獲取請求正文值,注意這裏是原始值
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=reqData.orderId
let orderStatus=reqData.orderStatus
let productType =reqData.productType
// 一個有意思小遊戲,地心俠士,歡迎微信搜索試玩
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 = CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
// 這裏使用了集合變量和環境變量一樣
pm.collectionVariables.set("sign", SHA1.toUpperCase());
2.3 通過Runer實現接口批量調用
某些情況下,要批量跑一些數據,也可使用postman處理,講數據文件這裏成csv文件,然後直接再Runner中上傳,然後從接口集合中拉去一個集合過來,選取一個接口,就可以實現通過數據驅動接口調用.
數據文件
序號 | 訂單號 | 訂單狀態 |
---|---|---|
1 | 31295399256 | Paid |
2 | 31295399257 | Paid |
3 | 31295399258 | Dealt |
請求正文
注意{{訂單號}} 和 {{訂單狀態}} 和數據文件列頭一一對應
{
"approveScenario": "",
"corpId": "地心俠士",
"orderId": "{{訂單號}}",
"orderStatus": "{{訂單狀態}}",
"productType": "HotelMember",
"refundType": null,
"sign": "{{sign}}",
"statusIDs": null
}
請求前置腳本(Pre-request Script),通過pm.iterationData獲取數據行數據
// ahutor 地心俠士
let reqData =JSON.parse( pm.request.body.raw);
let corpId= reqData.corpId
let orderId=pm.iterationData.get("訂單號")
let orderStatus=pm.iterationData.get("訂單狀態")
let productType =reqData.productType
let secret = pm.environment.get("secret");
let str ='corpId='+corpId+'&orderId='+orderId+'&orderStatus='+orderStatus+'&productType='+productType+'&secret='+secret
let SHA1 = CryptoJS.SHA1(str).toString(CryptoJS.enc.Hex);
pm.collectionVariables.set("sign", SHA1.toUpperCase());
3 總結
PostMan這個接口測試工具,提供常規的接口測試,還提供接口mock,支持代理抓包,功能還是蠻多的.在數據控制方面,提供後置和前置腳本,可編程性也強.接口可以直接轉換成不同語言的代碼,這個也很實用. 平時記錄一些開發過程的小知識點,歡迎關注我的公衆號[小院不小],也歡迎添加QQ:464884492直接交流
閒暇之餘,做了一款有趣耐玩的消除類微信小遊戲地心俠士
,有興趣可到微信搜索地心俠士玩玩,感謝支持