如何在介面測試工具apipost自定義變數?
這個就需要使用apipost自帶的指令碼功能,有預執行指令碼和後執行指令碼
什麼是APIPOST指令碼
APIPOST指令碼是基於JavaScript語言的程式碼片段,可實現在介面請求或集合測試時新增動態行為。
指令碼可實現的功能
測試(斷言)請求返回結果的正確性(後置指令碼)。
動態修改介面請求引數,如增加介面簽名引數等(前置指令碼)。
介面請求之間傳遞資料(使用指令碼操作變數)。
指令碼中可以直接請求一個介面地址。
APIPOST的指令碼分為預執行指令碼和後執行指令碼。
預執行指令碼
預執行指令碼是一個請求傳送前執行的指令碼。
後執行指令碼
後執行指令碼是一個請求傳送後執行的指令碼。
實際傳送演示
如下圖所示(控制檯列印),預執行在請求傳送前執行,請求結束後,後執行指令碼執行:
預執行指令碼
預執行指令碼的作用時間
預執行指令碼是一個請求傳送前執行的指令碼。
預執行指令碼的作用
預執行指令碼可以完成以下作用:
編寫JS函式等實現複雜計算;
變數的列印
定義、獲取、刪除、清空環境變數
定義、獲取、刪除、清空全域性變數
獲取請求引數
動態新增、刪除一個header請求引數
動態新增、刪除一個query請求引數
動態新增、刪除一個body請求引數
傳送HTTP請求
編寫JS函式等實現複雜計算
我們可以在預執行指令碼中定義一個函式_random,
function _random(){ return ‘你好,中國’ + Math。random(); }
它返回一個字串:“你好中國”+隨機數,此時可以透過
apt。globals。set(“random_var”, _random());
將它賦值給全域性變數random_var。
預執行指令碼列印除錯變數
我們可以透過console。log()將需要的變數列印在控制檯,從而檢視某個變數的當前值。如圖上面示例中的
定義、獲取、刪除、清空環境變數
apt。variables。set(“key”, “value”); // 設定一個值為value的環境變數key apt。variables。get(“key”); // 獲取環境變數key的值 apt。variables。delete(“key”); // 刪除環境變數key apt。variables。clear(); // 清空定義的全部環境變數
定義、獲取、刪除、清空全域性變數
apt。globals。set(“key”, “value”); // 設定一個值為value的全域性變數key apt。globals。get(“key”); // 設定一個值為value的全域性變數key apt。globals。delete(“key”); // 設定一個值為value的全域性變數key apt。globals。clear(); // 清空定義的全部全域性變數
獲取請求引數
透過request物件獲取請求引數,詳細可以參考《APIPOST內建變數》一節文件。
動態新增、刪除一個header請求引數
apt。setRequestHeader(“key”, “value”); // 動態新增一個鍵為key值為value的header引數 apt。removeRequestHeader(“key”); // 刪除header引數中鍵為key的引數
動態新增、刪除一個query請求引數
apt。setRequestQuery(“key”, “value”); // 動態新增一個鍵為key值為value的query引數 apt。removeRequestQuery(“key”); // 刪除query引數中鍵為key的引數
動態新增、刪除一個body請求引數
apt。setRequestBody(“key”, “value”);// 動態新增一個鍵為key值為value的body引數 只針對 form-data、urlencode有效 apt。removeRequestBody(“key”);//刪除body中鍵為key的引數 只針對 form-data、urlencode有效
傳送HTTP請求
我們可以在預執行指令碼中利用AJAX的$。ajax方法傳送一個http請求。以下是一個簡單的示例demo:利用預執行指令碼傳送一個請求到https://echo。apipost。cn/get。php,並將響應結果的bigint賦值給了全域性變數bigint。
$。ajax({ url:“https://echo。apipost。cn/get。php”, method:“POST”, headers:{ “content-type”:“application/json” }, timeout:“10000”, async:false, // 記住此項設定為 false,必須同步請求 data:JSON。stringify({“email”:“xxx@xxx。com”,“password”:“123456”}), success:function (response) { apt。globals。set(“bigint”,response。bigint); } } );
後執行指令碼
後執行指令碼的作用時間
後執行指令碼是一個請求傳送後執行的指令碼。
後執行指令碼的作用
後執行指令碼可以完成以下作用:
編寫JS函式等實現複雜計算;
變數的列印
定義、獲取、刪除、清空環境變數
定義、獲取、刪除、清空全域性變數
獲取請求引數
獲取響應引數
傳送HTTP請求
測試(斷言)請求返回結果的正確性
後執行指令碼列印除錯變數
其用法同預執行指令碼雷同,不再贅述。
定義、獲取、刪除、清空環境變數
其用法同預執行指令碼雷同,不再贅述。
定義、獲取、刪除、清空全域性變數
其用法同預執行指令碼雷同,不再贅述。
獲取請求引數
透過request物件獲取請求引數,詳細可以參考《APIPOST內建變數》一節文件。
獲取響應引數
透過response物件獲取請求引數,詳細可以參考《APIPOST內建變數》一節文件。
傳送HTTP請求
其用法同預執行指令碼雷同,不再贅述。
測試(斷言)請求返回結果的正確性
利用後執行指令碼進行測試(斷言)請求返回結果的正確性,詳細可以參考《響應以及斷言》一節文件。