1. 程式人生 > 程式設計 >Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

1.JSON Extractor

Json extractor 後置處理器用在返回格式為 Json 的 HTTP 請求中,用來獲取返回的 Json 中的某個值。並儲存成變數供後面的請求進行呼叫或斷言等。

Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

  • Variable names:儲存的變數名,後面使用 ${Variable names} 引用
  • JSON Path expressions:上一步中除錯通過的 json path 表示式
  • Match Numbers:匹配數字(0代表隨機,1代表第一個,-1代表所有)
  • Default Values:找不到時預設值,一般設定為 NOT FOUND
  • Compute concatenation var(suffix_ALL):是否統計所有,即將匹配到的所有值儲存,名為“變數名_ALL”,使用場景需要獲取的值有多個,後面需要對這一組資料進行操作

Jmeter後置處理器實現過程及方法應用

Json Path expression 的使用

JsonPath

描述

$

根節點

@

當前節點

.or[]

子節點

..

選擇所有符合條件的節點

*

所有節點

[]

迭代器標示,如陣列下標

[,]

支援迭代器中做多選

[start:end:step]

陣列切片運算子

?()

支援過濾操作

()

支援表示式計算

示例如下:  

Jmeter後置處理器實現過程及方法應用

2.正則表示式

  • 引用名稱:自己定義的變數名稱,後續請求將要引用到的變數名,如填寫的是:JWT,後面的引用方式是 ${JWT}
  • 正則表示式:提取內容的正則表示式,相當於 loadrunner 中的關聯函式
  • "()" 括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來  
  • "." 匹配除了換行符以外的任何字元  
  • "*" (貪婪) 重複零次或更多  
    • 例如 "aaaaaaaa" 匹配字串中所有的a 正則: "a*" 會出到所有的字元 "a"
  • "+" (懶惰) 重複一次或更多次
    • 例如 "aaaaaaaa" 匹配字串中所有的a 正則: "a+" 會取到字元中所有的 a 字元, "a+" 與 "a*" 不同在於 "+" 至少是一次而 "*" 可以是0次      
  • "?" (佔有) 重複零次或一次  
    • 例如 "aaaaaaaa" 匹配字串中的a 正則 : "a?" 只會匹配一次,也就是結果只是單個字元 a    
  • "*?" 重複任意次,但儘可能少重複   
    • 例如 "acbacb" 正則 "a.*?b" 只會取到第一個 "acb" 原本可以全部取到但加了限定符後,只會匹配儘可能少的字元 ,而 "acbacb" 最少字元的結果就是 "acb"     
  • "+?" 重複1次或更多次,但儘可能少重複,與 "*?" 一樣,只是至少要重複1次  
  • 還有分組的情況,常用的就這兩種,其它的可以再自行百度  
    • "(?=exp)" 匹配exp前面的位置    
    • "(?<=exp)" 匹配exp後面的位置    

模板:用 $$ 引用起來,如果在正則表示式中有多個正則表示式(多個括號括起來的),則可以是 $1$,$2$,$3$ 等等,表示解析到的第幾個值給 var。例如:$1$ 表示匹配到的第一個值

Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

匹配數字:0 代表隨機取值,此時提取結果是一個數組,1 表示取出匹配到的第一個值,負數表示提取所有符合條件的值。

Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

  • 預設值:正則匹配失敗時,取的值
  • 想要知道正則表示式是否正確,可以在請求後加入除錯取樣器(右鍵-新增-取樣器-除錯取樣器 debug sampler)
  • 沒有特殊的情況用(.*?)就可以解決所有問題

Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

Jmeter後置處理器實現過程及方法應用

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。