PostMan接口測試實用小點

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直接交流
公衆號
閒暇之餘,做了一款有趣耐玩的消除類微信小遊戲地心俠士,有興趣可到微信搜索地心俠士玩玩,感謝支持

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章