Postman高級技巧:Pre-Request-Script & Tests-Script

概述

身爲一個接口自動化測試工具,具有在運行中的動態行爲不足爲奇,Postman集成了一個強大的,基於NodeJS的Script引擎,利用它能夠爲請求以及響應添加一些動態的行爲:json

1)在發送請求以前,編寫Pre-Request-Script,爲請求參數進行加密處理、參數化等。api

2)接收到請求響應後,編寫Tests-Script,制定響應斷言、處理返回的數據等。app

大體的流程以下圖:
ide

實戰

現有兩個接口,分別爲獲取Token和獲取用戶信息,獲取Token接口參數須要計算Sign簽名,該接口的返回值將成爲獲取用戶信息接口的參數。

環境變量

爲了方便的在測試環境以及開發環境中無縫切換,將相關的信息配置爲兩套環境變量

OpenAccountApi.getUserToken

接口地址 http://{{host}}/api2/OpenAccountApi.getUserToken
請求方式 POST
請求參數 ?_app_key=[]&_time=[]&_sign=[]
請求正文 {"account":"帳號信息"}
響應正文 {"result": { "token": "","user_id": ?},"status": 0}

按照接口約定,配置相關的Postman請求:
工具


上圖上中的{{_time}}、{{_sign}}變量目前還取不到值,由於在環境變量中尚未相關定義,
如今開始編寫相關的Pre-Request-Script腳本:
測試

// 前置處理器:計算請求籤名
var _app_secret = pm.environment.get("provider_app_secret");
var _time = (new Date()).valueOf();
var _pre_sign = 'requestBody=' + pm.request.body.raw + ',time=' + _time + ',appSecret=' + _app_secret;
var _sign = CryptoJS.MD5(_pre_sign).toString();
pm.environment.set("_time", _time);
pm.environment.set("_sign", _sign);

console.log('[Pre]OpenAccountApi.getUserToken _pre_sign='+_pre_sign+',_sign=' + _sign);

該腳本完成後,以前參數中使用{{_sign}}的就能動態的獲取到值了。加密

請求發送成功後,須要提取響應正文的token做爲下一個接口的參數,取出來放入Postman環境變量中便可。
編寫相關的Tests-Script腳本:
spa

// 響應斷言
pm.test("Body matches token", function () {
    pm.expect(pm.response.text()).to.include("\"token\":");
    
    // 提取Token
    var result = pm.response.json().result;
    pm.environment.set("_userid", result.user_id);
    pm.environment.set("_token", result.token);
    console.log('[Tests]OpenAccountApi.getUserToken _token=' + result.token + ',user_id=' + result.user_id);
});

OpenUserApi.findById

接口地址 http://{{host}}/api2/OpenAccountApi.getUserToken
請求方式 POST
請求參數 ?_token=[]
請求正文 {"id":用戶Id}
響應正文 {"result": {用戶信息},"status": 0}


第二個接口沒有什麼特殊處理,寫了個簡單的響應斷言,若響應正文中包含"status":0,則代表請求成功了。日誌

console.log('[Tests]OpenUserApi.findById, requestBody=' + pm.request.body.raw);

pm.test("Body matches status", function () {
    pm.expect(pm.response.json().status).to.eql(0);
});

最終的測試效果

按Ctrl + Shift + I 能夠彈出開發者面板,查看到打印的相關日誌。

Collection Runner

最後附上相關的運行日誌:
code

相關文章
相關標籤/搜索