1. 程式人生 > >第三篇 Postman之 Tests(後置處理器,斷言)

第三篇 Postman之 Tests(後置處理器,斷言)

下一個 parse 後置處理器 token 9.png jmeter pri 獲取 strong

第二篇裏講了手動設置全局變量及局部變量的方法,但是這有一個缺點,就是每次測試之前,都需要獲取相關變量值,手動再填寫更新到對應的全局變量或者局部變量裏,這對於想進行自動化執行的人或者懶人就不太友好了,本文將繼續解決這個問題,主要還是我太懶了。

還是先拋一個問題:

接口B需要用到接口A返回的報文中的某個字段,具體點,接口B是個列表請求接口,它能正常執行,需要攜帶接口A登錄後返回報文裏的token值,怎麽通過代碼設置的方式實現呢?這就需要用到Tests(後置處理器)

Tests--後置處理器功能

Tests 相當於Jmeter裏的後置處理器,用於對接口執行後的數據進行處理。

舉個實際項目中非常非常常用的例子,用戶登錄後會返回一個token,然後後面所有的請求都需要攜帶這個token才能正常執行。

分析:首先要拿到這個token,必須先登錄,登錄成功後才會返回token值,所以需要對返回的數據進行處理,提取該token值,所以需要再Tests後置處理器裏操作才可以的。下面是根據項目實際示例來講。

下面的代碼是用戶登錄後的返回的 ResponseBody, data的值就是token,我們的目的就是要提取這個data值,然後存儲在環境變量裏,以供後面的接口調用。

技術分享圖片

(1)在Tests裏寫代碼提取出來data的值,並設置為變量

註意,Postman是用JavaScript開發的,如果要在postman裏編寫代碼測試,需要用js語言。


// JSON.parse是將responseBody進行json解析,然後存儲在jsonData字面量裏。
var jsonData = JSON.parse(responseBody);

// jsonData.data 是提取出來上面的responseBody裏的data值,然後賦值給Authorization1這個變量,set就是將Authorization1和它的值存儲在環境變量裏
pm.environment.set("Authorization1", jsonData.data);

技術分享圖片

(2)登陸接口請求之後,Tests會運行,然後環境變量下面就自動新增了上面的變量和值,看圖如下

技術分享圖片

(3) 那這個變量怎麽能在下一個接口裏進行自動調用呢?

同第二篇文章裏寫的一樣,通過{{變量名稱}}引用就可以了

技術分享圖片

(4)同理,如果在請求參數裏也想要進行自動引用怎麽辦呢?

比如,大家常常會測試訂單流轉,那訂單號、訂單金額等都可能多次在請求中被使用,也可以這樣一次處理掉,解放你的雙手。

首先,看下圖,是沒有需要設置的goodsPrice 和 dealPrice 兩個參數的。

技術分享圖片

Tests在訂單詳情接口請求口進行處理的代碼

// 根據訂單號調用訂單詳情接口,然後獲取

var jsonData = JSON.parse(responseBody)

// 提取訂單金額給goodsPrice變量
pm.environment.set("goodsPrice",jsonData.data.orderData.quotedPrice)

// 提取訂單金額給dealPrice變量
pm.environment.set("dealPrice",jsonData.data.orderData.quotedPrice)

截圖如下

技術分享圖片

執行後,參數就添加到了環境變量裏

技術分享圖片

其次,在請求參數體中的引用同第二篇的是一樣一樣的,還是在放個圖,加強印象

技術分享圖片

Tests--斷言的功能

接口測試,常常需要知道當次請求是否正確,就需要斷言,可以在Tests裏進行。

第三篇 Postman之 Tests(後置處理器,斷言)