介面測試 --apipost 如何自定義變數

如何在介面測試工具apipost自定義變數?

這個就需要使用apipost自帶的指令碼功能,有預執行指令碼和後執行指令碼

什麼是APIPOST指令碼

APIPOST指令碼是基於JavaScript語言的程式碼片段,可實現在介面請求或集合測試時新增動態行為。

指令碼可實現的功能

測試(斷言)請求返回結果的正確性(後置指令碼)。

動態修改介面請求引數,如增加介面簽名引數等(前置指令碼)。

介面請求之間傳遞資料(使用指令碼操作變數)。

指令碼中可以直接請求一個介面地址。

APIPOST的指令碼分為預執行指令碼和後執行指令碼。

預執行指令碼

預執行指令碼是一個請求傳送前執行的指令碼。

介面測試 --apipost 如何自定義變數

後執行指令碼

後執行指令碼是一個請求傳送後執行的指令碼。

介面測試 --apipost 如何自定義變數

實際傳送演示

如下圖所示(控制檯列印),預執行在請求傳送前執行,請求結束後,後執行指令碼執行:

介面測試 --apipost 如何自定義變數

預執行指令碼

預執行指令碼的作用時間

預執行指令碼是一個請求傳送前執行的指令碼。

介面測試 --apipost 如何自定義變數

預執行指令碼的作用

預執行指令碼可以完成以下作用:

編寫JS函式等實現複雜計算;

變數的列印

定義、獲取、刪除、清空環境變數

定義、獲取、刪除、清空全域性變數

獲取請求引數

動態新增、刪除一個header請求引數

動態新增、刪除一個query請求引數

動態新增、刪除一個body請求引數

傳送HTTP請求

編寫JS函式等實現複雜計算

介面測試 --apipost 如何自定義變數

我們可以在預執行指令碼中定義一個函式_random,

function _random(){ return ‘你好,中國’ + Math。random(); }

它返回一個字串:“你好中國”+隨機數,此時可以透過

apt。globals。set(“random_var”, _random());

將它賦值給全域性變數random_var。

預執行指令碼列印除錯變數

我們可以透過console。log()將需要的變數列印在控制檯,從而檢視某個變數的當前值。如圖上面示例中的

介面測試 --apipost 如何自定義變數

定義、獲取、刪除、清空環境變數

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); } } );

後執行指令碼

後執行指令碼的作用時間

後執行指令碼是一個請求傳送後執行的指令碼。

介面測試 --apipost 如何自定義變數

後執行指令碼的作用

後執行指令碼可以完成以下作用:

編寫JS函式等實現複雜計算;

變數的列印

定義、獲取、刪除、清空環境變數

定義、獲取、刪除、清空全域性變數

獲取請求引數

獲取響應引數

傳送HTTP請求

測試(斷言)請求返回結果的正確性

後執行指令碼列印除錯變數

其用法同預執行指令碼雷同,不再贅述。

定義、獲取、刪除、清空環境變數

其用法同預執行指令碼雷同,不再贅述。

定義、獲取、刪除、清空全域性變數

其用法同預執行指令碼雷同,不再贅述。

獲取請求引數

透過request物件獲取請求引數,詳細可以參考《APIPOST內建變數》一節文件。

獲取響應引數

透過response物件獲取請求引數,詳細可以參考《APIPOST內建變數》一節文件。

傳送HTTP請求

其用法同預執行指令碼雷同,不再贅述。

測試(斷言)請求返回結果的正確性

利用後執行指令碼進行測試(斷言)請求返回結果的正確性,詳細可以參考《響應以及斷言》一節文件。