一、基礎信息
所用jmeter版本:jmeter4.0
所記錄功能名稱:JSON Extractor
二、使用需求
在對返回結果較復雜且為json結構的HTTP請求進行提取某一個值,以用作其他接口使用或者用來斷言的等。
三、使用方法
1、添加步驟:選擇線程組中的HTTP請求——右鍵“添加”——后置處理器——JSON Extractor
圖示如下:
2、實例說明
這一過程主要說明如何去寫JSON Extractor匹配表達式以及如何去驗證自己寫的JSON Extractor是否正確
{為了方便看,查看json的目錄層級用抓包的結果展示,jmeter返回的不能收縮,不方便查看}
√、我們使用JSON Extractor匹配第一層級內容message的值(為了方便查看把不需要的層級給收起來了 )。 抓包查看返回的結構如下:
使用jmeter的查看結構樹中的?json path expression可以測試自己所寫的JSON Extractor是否正常。測試結果如下:
√、我們使用JSON Extractor匹配第二層級內容total的值(為了方便查看把不需要的層級給收起來了 )。 抓包查看返回的結構如下:
使用jmeter的查看結構樹中的?json path expression可以測試自己所寫的JSON Extractor是否正常。測試結果如下:
√、我們使用JSON Extractor匹配第三層級內容id的值(為了方便查看把不需要的層級給收起來了 )。 抓包查看返回的結構如下:
使用jmeter的查看結構樹中的?json path expression可以測試自己所寫的JSON Extractor是否正常。測試結果如下:
注:關于用到的一個[0]會在后邊說明。
√、關于匹配一個數組的內容的用法。
差不多了,不同層級的匹配實例說明的都已經說的可以了,照葫蘆畫瓢應該可以學會一些 。但是這個過程中還有一些需要說明的東西后邊一起說明~~~。
四、要學會用
前一個過程說明了如何去寫JSON Extractor匹配表達式以及如何去驗證自己寫的JSON Extractor是否正確,接下來這一個過程主要記如何去使用寫的JSON Extractor匹配表達式。
添加了兩個HTTP請求,目錄如下:
實例:獲取待出庫單列表接口和查看待出庫單詳情接口,需要實現的過程是:先獲取待出庫單列表,然后使用JSON Extractor獲取列表中其中一個stockOutId的值然后在第二個接口中去使用,并返回內容。
再來看JSON Extractor中的內容,其實就是直接把在json path expression測試驗證正確的表達式復制到這里來就行了。
這咋突然感覺沒啥可說得了呢,如何寫已經描述了,如何用也圖示了。
把幾個參數標注一下吧
names of created?Variable :保存的變量名,后面使用${變量名}引用,如:${stockOutId}
JSON Path? expressions:上一步中調試通過的json path表達式,如果:$.data.list[0].stockOutId
Match No.(0 for Random):匹配數字(0代表隨機,1代表第一個,-1代表所有)
Default Values:找不到時默認值,一般設置為NOT FOUND
Compute concatenation var(suffix_ALL):是否統計所有,即將匹配到的所有值保存,名為“變量名_ALL”,使用場景需要獲取的值有多個,后面需要對這一組數據進行操作。
五、特別關注
1、json串 []表示對象組成的數組,{}表示對象
2、如果需要同時匹配多個值,可以如圖設置
3、在第二步中list[0]的用法說明:[0] 表示匹配第一個值,[1] 表示匹配第二個值,[*] 表示匹配所有的值,如圖:
4、JSON Extractor主要用于匹配返回數據結構為json的參數提取