Jmeter 常用後置處理器之正規表示式提取器、JSON 提取器、JSON JMESPath Extractor
後置處理器在取樣器執行之後執行,通常用於提取處理樣本返回資料,應用於同一範圍內的所有取樣器,如果要將後置處理器應用於指定的取樣器,需要將其新增為取樣器的子代。
後置處理器在斷言之前執行,所以無權訪問任何斷言結果。
正規表示式提取器
允許使用者使用正規表示式從伺服器響應中提取值。作為後處理器,此元素將在其範圍內的每個Sample請求之後執行,應用正規表示式,提取請求的值,生成模板字串,並將結果儲存到給定的變數名稱中。
屬性描述
名稱:顯示的此取樣器的描述性名稱,可自定義
Apply to: 僅主樣本 :僅適用於主樣本
僅子樣本 :僅適用於子樣本
主樣本和子樣本 :均適用。
使用的JMeter變數名稱 -提取將應用於命名變數的內容
要檢查的響應欄位 正規表示式提取的目標,即設定從哪裡提取
引用名稱 :可引用的變數名稱
正規表示式: 用於解析響應資料的正規表示式
模板 :模板的語法是:' $ 1 $ '引用組1,' $ 2 $ '引用組2。$ 0 $引用整個表示式匹配的內容。
匹配數字: 指示要使用的匹配項。
預設值: 如果表示式不匹配,則將變數設定為預設值
JSON提取器
JSON 提取器可以使用JSON-PATH語法從JSON格式的響應中提取資料。
該後處理器與正規表示式提取器非常相似。必須將其放置為HTTP Sampler或具有JSON響應的任何其他取樣器的子級,可以以非常簡單的方式提取JSON文字內容。
屬性描述
名稱 顯示的此取樣器的描述性名稱,可自定義
Apply to 僅主樣本 :僅適用於主樣本
僅子樣本 :僅適用於子樣本
主樣本和子樣本 :均適用。
使用的JMeter變數名稱 -提取將應用於命名變數的內容
Names of created variables 以 ; 分隔的變數名稱(需要匹配JSON Path的數量)
JSON Path Expressions 以 ; 分隔的JSON Path表示式(必須匹配變數數量)
Default Values 以 ; 分隔的預設值,若表示式沒有匹配結果,則使用預設值
Match No. (0 for Random) 如果JSON Path提取到多個結果,則可以設定選擇提取哪個結果作為變數
Compute concatenation var 如果找到許多結果,將使用' , '分隔符將它們連線起來,並將其儲存在名為 _ALL的var中
Match No. (0 for Random)中設定:
0:表示隨機(預設值)
-1:表示提取所有結果,它們將被命名為<變數名> _N(其中N從1到結果數)
X:表示提取第X 個結果。如果此X大於匹配數量,則不返回任何內容。將使用預設值
關於JsonPath的詳細使用介紹
JSON示例:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
提取所有書的作者 :$.store.book[*].author
提取所有的作者 :$..author
提取store包含的所有資料 :$.store.*
提取所有物品的價格 :$.store..price
提取第三本書的資料 :$..book[2]
提取倒數第二本書的資料 :$..book[-2]
提取前兩本書的資料 :$..book[1,2]
提取索引1(包括)到索引2(不包括)的書的資料 :$..book[1:2]
提取最後兩本書 :$..book[-2:]
所有帶有isbn屬性的書 : $..book[?(@.isbn)]
所有價格小於10的書 :$..book[?(@.price < 10)]
所有價格小於屬性“expensive”的書 :$..book[?(@.price<=$['expensive'])]
需要注意的是, Json提取器中不允許在JsonPath末尾呼叫函式(min()、max()、avg()、stddev()、length()、sum()),如果使用這些函式,將無法獲取預期的結果。
通常的,編寫JsonPath時,可以通過察看結果樹中的Json Path Tester測試提取的結果是否符合預期。
JSON JMESPath Extractor
JSON JMESPath Extractor作為5.2版本之後加入的後置處理器,其功能與JSON提取器類似,都是對JSON格式的返回資料進行提取,但使用的語法不同。JSON JMESPath Extractor使用JMESPath查詢語言從Json結果中提取值。
屬性描述
名稱 :顯示的此取樣器的描述性名稱,可自定義
Apply to
僅主樣本 :僅適用於主樣本
僅子樣本 :僅適用於子樣本
主樣本和子樣本 :均適用。
使用的JMeter變數名稱 :提取將應用於命名變數的內容
Names of created variables :變數名稱
JMESPath Expressions :JMESPath表示式
Default Values :若表示式沒有匹配結果,則使用預設值
Match No. (0 for Random) :如果JMESPath提取到多個結果,則可以設定選擇提取哪個結果作為變數
Match No. (0 for Random)中設定:
0:表示隨機(預設值)
-1:表示提取所有結果,它們將被命名為<變數名> _N(其中N從1到結果數)
X:表示提取第X 個結果。如果此X大於匹配數量,則不返回任何內容。將使用預設值
關於JMESPath的詳細使用介紹
Json JMESPath示例:
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
提取所有書的作者 :store.book[*].author
提取store包含的所有分類資料 :store.*
提取所有物品的價格 :store.[bicycle.price,book[*].price]
提取第三本書的資料 :store.book[2]
提取倒數第二本書的資料 :store.book[-2]
提取前兩本書的資料 :store.book[:2]
提取索引1(包括)到索引2(不包括)的書的資料 :store.book[1:2]
提取最後兩本書 :store.book[-2:]
所有帶有isbn屬性的書 :store.book[?(@.isbn)]
所有書種類的數量 :length(store.book[*])
價格最高的書名 :max_by(store.book, &price).title
價格最低的書資訊 :min_by(store.book, &price)
JSON JMESPath Extractor與JsonPath提取器對比
一個JsonPath提取器可以通過 ; 分離的方式,提取多個變數表示式
JSON JMESPath Extractor只支援提取一個變數,如果要提取多個變數,則需要新增多個JSON JMESPath Extractor
JsonPath提取器不支援函式,JSON JMESPath Extractor支援使用函式length()、max_by()、min_by(),可應用於部分特殊場景,所以可以根據場景實際需要,選擇要用的提取器型別
相關文章
- jmeter學習指南之Boundary Extractor和正規表示式提取器JMeter
- 【jmeter】實現介面關聯的兩種方式:正規表示式提取器和json提取器JMeterJSON
- 5.8.2 jmeter元件-後置處理器-XPath提取器JMeter元件
- JMeter 關聯JSON提取器JMeterJSON
- jmeter中提取token值(正規表示式,)JMeter
- 在 JMeter 中使用 JSON 提取器提取特定條件下的值JMeterJSON
- JMeter—後置處理器(十)JMeter
- Jmeter系列(27)- 詳解正則提取器JMeter
- 『動善時』JMeter基礎 — 35、JMeter介面關聯【JSON提取器】詳解JMeterJSON
- 正規表示式提取指定字元之間字串字元字串
- 使用JMeter的JSON提取器:透過遞迴下降查詢,從介面響應中提取特定欄位JMeterJSON遞迴
- 利用正規表示式提取固定字元之間的字串字元字串
- Sublime Text提取正規表示式匹配的文字
- Python正規表示式提取車牌號Python
- 如何在 jmeter 中用正則或者 json 提取列表裡所有資料JMeterJSON
- Spring之後置處理器Spring
- BeanPostProcessor 後置處理器Bean
- Java正規表示式提取字元的方法例項Java字元
- 可以提取ip地址的正規表示式程式碼例項
- 深入理解JMeter中的JSON ExtractorJMeterJSON
- 影像處理之骨架提取
- Spring原始碼之BeanFactoryPostProcessor(後置處理器)Spring原始碼Bean
- 『動善時』JMeter基礎 — 34、JMeter介面關聯【XPath提取器】JMeter
- 記錄在 jmeter 介面測試中 json 返回數值幾種特殊正則提取JMeterJSON
- 正規表示式處理批量插入
- 可以提取連結<a>元素的正規表示式程式碼例項
- 可以提取圖片地址的正規表示式程式碼例項
- 可以提取浮點數的正規表示式程式碼例項
- 用正規表示式提取字串中的字元(包含數字)字串字元
- 正規表示式之簡易markdown檔案解析器
- JMeter—前置處理器(九)JMeter
- 正規表示式提取 git 提交記錄中的新增程式碼行Git
- Python爬蟲教程-19-資料提取-正規表示式(re)Python爬蟲
- C# 正規表示式提取字串中括號裡的值C#字串
- 能夠提取郵政編碼的正規表示式程式碼例項
- 利用正規表示式刪除提取字串中文字內容字串
- 使用正規表示式處理金額
- 使用JMeter從JSON響應的URL引數中提取特定值JMeterJSON