1. 程式人生 > 實用技巧 >Jmeter後置處理器之JSON Extractor

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