Jmeter後置處理器實現過程及方法應用
阿新 • • 發佈:2020-09-08
1.JSON Extractor
Json extractor 後置處理器用在返回格式為 Json 的 HTTP 請求中,用來獲取返回的 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] |
陣列切片運算子 |
?() |
支援過濾操作 |
() |
支援表示式計算 |
示例如下:
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$ 表示匹配到的第一個值
匹配數字:0 代表隨機取值,此時提取結果是一個數組,1 表示取出匹配到的第一個值,負數表示提取所有符合條件的值。
- 預設值:正則匹配失敗時,取的值
- 想要知道正則表示式是否正確,可以在請求後加入除錯取樣器(右鍵-新增-取樣器-除錯取樣器 debug sampler)
- 沒有特殊的情況用(.*?)就可以解決所有問題
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。