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

轉載地址:https://www.cnblogs.com/loveapple/p/9852456.html

聲明:如有侵權,請聯繫我刪除,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章