正則表達式提取器
點擊後置處理器中Post Processors 中的正則表達式提取器 Regular Expression Extractorhtml
Appy to: 表示做用於哪個請求
Main sample and sub-samples: 主要的請求和子請求
Main sample only: 這個是默認選項,表示只做用在主要的請求
Sub-samples only:
JMeter Variable Name to usejava
Field to check:表示從哪裏去匹配
Body: 這個是默認選項
Body(unescaped):
Body as a Document:
Response Headers:
Request Headers:
URL
Response Code
Response Message正則表達式
Name of created variable: card 提取出來的數據存儲爲一個變量,好比這樣定義爲變量 card
Regular Expression: {"resCode":"000","resMsg":"ok","resCardNum":"(.+)"} 匹配響應時採用的一個規則;該規則爲正則表達式
Template ( $i$ where i is capturing group number,start at 1) 模板: $1$
Match No.(0 for Random)
Default Value:json
上述是一個簡單的註冊接口,註冊成功後分配卡號,並將卡號信息在ResponseBody中進行返回
若以後使用card變量,用${card}使用,注意大小下啥的,都要與當初定義的相一致
正則表達式進行提取的時候:
. 表示匹配任意字符串
+ 表示匹配一次或屢次
? 表示匹配到第一個匹配項後即中止匹配
若返回體中只能匹配到一個card,那直接如我寫的$1$便可,無需考慮過多
若返回體中有多個字符,好比是一個抽獎接口,一次能夠返回多個獎的那種,那你用prize會獲得多個值,在Template中,用$1$表示解析到的第一個值提取出來,同理
{ "resCode": "000", "resMsg": "ok", "prize": "prize1" } { "resCode": "000", "resMsg": "ok", "prize": "prize2" } { "resCode": "000", "resMsg": "ok", "prize": "prize3" }
$2$表示解析到的第2個值提取出來
$3$表示解析到的第3個值提取出來
【不要考慮個人返回體格式是什麼,能夠看出是能匹配到3個prize,那我填寫了$1$表示將規則中第一個括號的模式匹配到的內容賦給變量prize】
模板選項和下面的Match No有點重複,Match選項中填寫0表示隨機,那只有一個值,隨機也只能是這一個值
有多個值,想要具體哪個,在match中用對應的數字進行表示,好比第一個,第二個等等
Default Value: 有時候,返回體中沒有返回card這個值,怎麼辦?給他設定一個默認值。 這個要看具體狀況。
經常使用的就如我上面的截圖,Match and Default Value 都空置着唄
Jmeter中還有其餘的提取器,好比如今大多數接口是json格式的入參和出參,用json提取器JSON Extractor 也很是好用,能根據層級進行提取
http://www.javashuo.com/article/p-pohyrcqp-my.html有的Jmeter版本比較老,Json提取器須要下載插件才能得到