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)
- 沒有特殊的情況用(.*?)就可以解決所有問題
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/ZhengYing0813/p/11845188.html