Jmeter后置處理器之JSON Extractor


一、使用場景

  json extractor后置處理器用在返回格式為json的HTTP請求中,用來獲取返回的json中的某個值。並保存成變量供后面的請求進行調用或斷言等。

二、使用方法

步驟一:選擇HTTP請求—>后置處理器—>JSON Extractor

 

步驟二:在查看結果樹中,通過json path expression找到需要的json值

 

 

 

步驟三:設置JSON Extractor

 

名稱:json后置表達式的名稱,標識作用,建議使用有意義的名字

Variable names:保存的變量名,后面使用${Variable names}引用

JSON Path  expressions:上一步中調試通過的json path表達式

Match Numbers:匹配數字(0代表隨機,1代表第一個,-1代表所有)

Default Values:找不到時默認值,一般設置為NOT FOUND

Compute concatenation var(suffix_ALL):是否統計所有,即將匹配到的所有值保存,名為“變量名_ALL”,使用場景需要獲取的值有多個,后面需要對這一組數據進行操作,如:

三、關鍵點

Json Path expression的使用

語法:

JsonPath

描述

$

根節點

@

當前節點

.or[]

子節點

..

選擇所有符合條件的節點

*

所有節點

[]

迭代器標示,如數組下標

[,]

支持迭代器中做多選

[start:end:step]

數組切片運算符

?()

支持過濾操作

()

支持表達式計算

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、實戰

需求:實現一個業務場景,同步患者,首次同步時同步所有患者,第二次同步時同步比base_version大的患者。

分析:根據輸入的參數base_version,同步不同的數據,base_version=1111111111111時同步所有,響應數據中返回所有患者的base_version。下一次同步時傳入當前最大的base_version,只同步比這個base_version大的患者的。

關鍵點:第一次同步后獲取最大的base_version,作為下一次同步的參數,關鍵是如何獲取最大值

解決方案:

1、使用json后置處理器獲取所有的base_version

2、通過前置處理器JSR223 PreProcessor對返回的base_version進行處理,找出最大值(發現是列表最后一個)

3、第二次同步接口中,傳入計算后的最大的base_version

 或使用如下腳本,計算最大值

var base_versions=vars.get("base_versions_ALL");
var version_list=base_versions.split(",");
var maxInNumbers = Math.max.apply(Math, version_list);

vars.put("max_version",maxInNumbers);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM