文章目錄
- 前言
-
一、Jmeter中使用正則表達(dá)式匹配
- 1、選擇 RegExp Tester
- 2、在線程組------》添加------》后置處理器-------里面添加一個(gè)“正則表達(dá)式提取器”
-
二、關(guān)于正則表達(dá)式提取器里面字段的解釋
- 參數(shù)說(shuō)明
-
三、進(jìn)一步解釋Jmeter正則表達(dá)式提取器中的模板
- 1、當(dāng)模板設(shè)置為$0$? ? ?表示在匹配的結(jié)果中隨機(jī)選擇一個(gè)
- 2、使用Jmeter中正則表達(dá)式提取器模板匹配舉例(詳細(xì)講解)
- 3、補(bǔ)充第二點(diǎn)的內(nèi)容
- 4、網(wǎng)上另一種解釋(目前沒(méi)有實(shí)操過(guò),先記錄)
- 5、這里自己理解有一種說(shuō)法
- 注意
- 總結(jié)
前言
本章節(jié)主要講解正則表達(dá)式提取器中的模板的含義和用法。
一、Jmeter中使用正則表達(dá)式匹配
步驟:
1、選擇 RegExp Tester
2、在線程組------》添加------》后置處理器-------里面添加一個(gè)“正則表達(dá)式提取器”:
?
?
注意:模板選項(xiàng) 和下面的 匹配數(shù)字選項(xiàng) 有點(diǎn)重復(fù)(理解起來(lái)有點(diǎn)重復(fù)),有時(shí)候可以不填寫模板直接填寫匹配數(shù)字,也是可以成功的。所以并不是兩個(gè)都的填寫。所以才覺(jué)得有點(diǎn)重復(fù)。
?
二、關(guān)于正則表達(dá)式提取器里面字段的解釋
名稱 | 可以隨意設(shè)置,最好有業(yè)務(wù)意義 |
注釋 | 可以隨意設(shè)置,可以為空 |
Apply to | 應(yīng)用范圍,四個(gè)選項(xiàng) |
Main sample and sub-samples | 匹配范圍包括當(dāng)前父取樣器并覆蓋至子取樣器 |
Main sample only | 匹配范圍是當(dāng)前的父取樣器 |
Sub-sample only | 僅匹配子取樣器 |
JMeter Variable | 支持對(duì) Jmeter 變量值進(jìn)行匹配 |
要檢查的響應(yīng)字段 | 針對(duì)響應(yīng)字段的不同部分進(jìn)行匹配,共七個(gè)選項(xiàng) |
主體 | 響應(yīng)數(shù)據(jù)的主體部分,排除 Header 部分;Http 協(xié)議返回請(qǐng)求的主體部分就是 Body |
Body(unescaped) | 針對(duì)替換了轉(zhuǎn)義碼的 Body 部分 |
Body as a Document | 返回內(nèi)容作為一個(gè)文檔進(jìn)行匹配 |
信息頭 | 只匹配信息頭部分的內(nèi)容 |
URL | 只匹配 URL 鏈接 |
響應(yīng)代碼 | 匹配響應(yīng)代碼,比如 HTTP 協(xié)議返回碼 200 代表成功 |
響應(yīng)信息 | 匹配響應(yīng)信息,比如處理成功返回“成功”字樣,或者“OK”字樣 |
引用名稱 | 匹配出來(lái)的信息通過(guò)此名稱進(jìn)行訪問(wèn),${引用名稱} |
正則表達(dá)式 | 正則表達(dá)式提起器使用此串進(jìn)行信息匹配 |
模板 | 正則表達(dá)式可以設(shè)置多個(gè)模板進(jìn)行匹配,在此指定運(yùn)用哪個(gè)模板,$1$ 指第一個(gè)模板,$2$ 指定第二個(gè)模板,以此類推,$0$ 表示全文匹配 |
匹配數(shù)字 | 在匹配過(guò)程中往往會(huì)出現(xiàn)多個(gè)值匹配的青睞,如果匹配數(shù)字為0,則代表隨機(jī)取匹配 |
默認(rèn)值 | 如果沒(méi)有匹配到可以指定一個(gè)默認(rèn)值 |
參數(shù)說(shuō)明
名稱: 可以隨意設(shè)置,最好有業(yè)務(wù)意義
注釋: 可以隨意設(shè)置,可以為空
Apply to: 應(yīng)用范圍,四個(gè)選項(xiàng)
Main sample and sub-samples:匹配范圍包括當(dāng)前父取樣器并覆蓋至子取樣器
Main sample only:匹配范圍是當(dāng)前的父取樣器
Sub-sample only:僅匹配子取樣器
JMeter Variable:支持對(duì) Jmeter 變量值進(jìn)行匹配
要檢查的響應(yīng)字段: 針對(duì)響應(yīng)字段的不同部分進(jìn)行匹配,共七個(gè)選項(xiàng)
主體:響應(yīng)數(shù)據(jù)的主體部分,排除 Header 部分;Http 協(xié)議返回請(qǐng)求的主體部分就是 Body
Body(unescaped):針對(duì)替換了轉(zhuǎn)義碼的 Body 部分
Body as a Document:返回內(nèi)容作為一個(gè)文檔進(jìn)行匹配
信息頭:只匹配信息頭部分的內(nèi)容
URL:只匹配 URL 鏈接
響應(yīng)代碼:匹配響應(yīng)代碼,比如 HTTP 協(xié)議返回碼 200 代表成功
響應(yīng)信息:匹配響應(yīng)信息,比如處理成功返回“成功”字樣,或者“OK”字樣
引用名稱: 匹配出來(lái)的信息通過(guò)此名稱進(jìn)行訪問(wèn),${引用名稱}
正則表達(dá)式: 正則表達(dá)式提起器使用此串進(jìn)行信息匹配
模板: 正則表達(dá)式可以設(shè)置多個(gè)模板進(jìn)行匹配,在此指定運(yùn)用哪個(gè)模板,$1$ 指第一個(gè)模板,$2$ 指定第二個(gè)模板,以此類推,$0$ 表示全文匹配
匹配數(shù)字: 在匹配過(guò)程中往往會(huì)出現(xiàn)多個(gè)值匹配的青睞,如果匹配數(shù)字為0,則代表隨機(jī)取匹配值;不同模板可能會(huì)匹配一組值,那么可以用匹配數(shù)字來(lái)確定取這一組值中的哪一個(gè);負(fù)數(shù)取所有值,可以與For Each Controller 一起使用來(lái)遍歷
默認(rèn)值: 如果沒(méi)有匹配到可以指定一個(gè)默認(rèn)值
三、進(jìn)一步解釋Jmeter正則表達(dá)式提取器中的模板
下面是各參數(shù)值的含義:
參數(shù) | 釋義 |
---|---|
引用名稱 | 在HTTP等請(qǐng)求中,引用此數(shù)據(jù),需要用到的名稱 |
正則表達(dá)式 | 用于將需要的數(shù)據(jù)提取出來(lái) |
模板(一個(gè)正則表達(dá)式就表示一個(gè)模板) 例如:一個(gè)句子當(dāng)中含有3個(gè)正則表達(dá)式, 就表示有三個(gè)模板。 一個(gè)句子當(dāng)中可以寫很多個(gè)正則表達(dá)式 |
表示使用提取到的第幾個(gè)值:$-1$:表示取所有值 $0$:表示隨機(jī)取值 $1$:表示取第1個(gè) $2$:表示取第二個(gè) 以此類推:$n$:表示取第n個(gè)
|
匹配數(shù)字(0代表隨機(jī)) | 0 代表隨機(jī)取值,1 代表全部取值 |
缺省值 | 如果正則表達(dá)式?jīng)]有搜找到值,則使用此缺省值 |
1、當(dāng)模板設(shè)置為$0$? ? ?表示在匹配的結(jié)果中隨機(jī)選擇一個(gè)
?
2、使用Jmeter中正則表達(dá)式提取器模板匹配舉例(詳細(xì)講解)
例如要提取響應(yīng)結(jié)果里的token字段及sex字段(響應(yīng)內(nèi)容為:
"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"),提取器如下設(shè)置:
"token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName":"12548650"
在正則表達(dá)式里面可以寫成:"token":"(.*?)","sex":(.*?),"userName"
正則表達(dá)式: 數(shù)據(jù)提取器,一般簡(jiǎn)單的通用語(yǔ)法就是:左邊界(.*?)右邊界,左右邊界就是為了能準(zhǔn)確定位到想匹配的內(nèi)容,如最上面圖的 "token":"(.*?)","sex":(.*?),"userName", 其中"token":"以及","sex": 和,"userName"這3個(gè)就是左右邊界,(.*?) 是替換了想要提取的內(nèi)容,里面的'?'為非貪婪匹配,(非貪婪模式就是說(shuō)在遇到第一個(gè)右邊界后就停止匹配,這樣就可以精確拿到想要的內(nèi)容)。建議均使用非貪婪匹配,除非特殊情況。
模板: 對(duì)應(yīng)正則表達(dá)式提取器類型,樣式為:$n$。
若模板為:$0$,則為整個(gè)表達(dá)式匹配到的內(nèi)容,就是包括小括號(hào)內(nèi)跟小括號(hào)外的內(nèi)容,即("token":"83EEAA887F1D2F1AA1CDA9E197810992","sex":0,"userName")。
若模板為:$1$,則對(duì)應(yīng)正則表達(dá)式中的第一個(gè)(.*?)所匹配的內(nèi)容,即(83EEAA887F1D2F1AA1CDA9E197810992) ,
若模板為:$2$,則對(duì)應(yīng)正則表達(dá)式中的第二個(gè)(.*?)所匹配的內(nèi)容,即(0),
若模板為$1$$2$,則把2個(gè)(.*?)所匹配的內(nèi)容拼接起來(lái),即(83EEAA887F1D2F1AA1CDA9E1978109920)。
注意:這個(gè)模板的意思也就是把正則表達(dá)式看成模板,有幾個(gè)正則表達(dá)式,就是幾個(gè)模板。
匹配數(shù)字: 正則表達(dá)式匹配數(shù)據(jù)的最終結(jié)果可以看做一個(gè)數(shù)組,匹配數(shù)字即可看做是數(shù)組的第幾個(gè)元素。當(dāng)為?0?時(shí),隨機(jī)返回匹配的數(shù)據(jù)。當(dāng)為?1?時(shí),表示返回匹配結(jié)果數(shù)組的第一個(gè)元素。當(dāng)為負(fù)數(shù)(-1,-2,-100都可以)時(shí),表示返回全部元素,并且同時(shí)會(huì)返回一個(gè)元素總數(shù)的變量token_matchNr,在引用時(shí):通過(guò)${token_1}的方式來(lái)取第1個(gè)匹配的內(nèi)容,${token_2}來(lái)取第2個(gè)匹配的內(nèi)容。
缺省值: 匹配失敗時(shí)的默認(rèn)值。通常用于后續(xù)的邏輯判斷,建議使用一些特殊含義的,比如0,NULL,ERROR等。正則結(jié)果查看:
如何查看提取到了想要的內(nèi)容呢,這里就需要提到另外一個(gè)后置處理器: Debug PostProcessor
該元件就為調(diào)試所用,一般用于查看變量值,添加方法同正則表達(dá)式提取器。
3、補(bǔ)充第二點(diǎn)的內(nèi)容:
正則表達(dá)式提取器說(shuō)明:
Apply to: 應(yīng)用范圍(一般就選擇默認(rèn)的Main sample only),就算有重定向,一般也是提取最終那個(gè)請(qǐng)求的接口。
要檢查的響應(yīng)字段: 樣本數(shù)據(jù)源。
主體: 接口響應(yīng)主體內(nèi)容,一般要提取普通http響應(yīng)結(jié)果的數(shù)據(jù),都勾選這個(gè)。
信息頭:響應(yīng)頭的所有內(nèi)容。
Request Headers:請(qǐng)求頭的所有內(nèi)容。
url:是對(duì)sample的url進(jìn)行匹配,也就是查看結(jié)果樹里請(qǐng)求內(nèi)容的第一行url,不包含data里的請(qǐng)求參數(shù)(即只能匹配protocol(協(xié)議)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)。
響應(yīng)代碼:http響應(yīng)代碼,如101,200,302,404,501等。
響應(yīng)信息:http響應(yīng)代碼對(duì)應(yīng)的響應(yīng)信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)。
引用名稱: 其他地方引用時(shí)的變量名稱,名稱只能是一個(gè),引用方法:${token}。如圖
參考博主:jmeter 正則表達(dá)式學(xué)習(xí)(一)--使用詳解_linapursue的博客-CSDN博客
參考博主:Jmeter—正則表達(dá)式提取器:模板&匹配數(shù)字詳解_jmeter正則匹配_zhangkezkzk的博客-CSDN博客
4、網(wǎng)上另一種解釋(目前沒(méi)有實(shí)操過(guò),先記錄)
舉例:有以下這些字段
{
"resCode": "000",
"resMsg": "ok",
"prize": "prize1"
}
{
"resCode": "000",
"resMsg": "ok",
"prize": "prize2"
}
{
"resCode": "000",
"resMsg": "ok",
"prize": "prize3"
}
正則表達(dá)式為:"prize": "(.*?)"
這個(gè)表達(dá)式可以匹配三個(gè)prize
現(xiàn)在如果我要拿取第二個(gè)prize,也就是要拿到prize2,那么模板的值應(yīng)該填寫:$2$
5、這里自己理解有一種說(shuō)法:
【不要考慮個(gè)人返回體格式是什么,能夠看出是能匹配到3個(gè)prize,那我填寫了$1$表示將規(guī)則中第一個(gè)括號(hào)的模式匹配到的內(nèi)容賦給變量prize】
因?yàn)樵谶@里,匹配了3次,那么相當(dāng)于這個(gè)括號(hào)里面的正則表達(dá)式被用了3次,$1$這里說(shuō)的是將規(guī)則中第一個(gè)括號(hào)的模式匹配到的內(nèi)容,匹配是從上到下的匹配,那么第一次肯定就會(huì)匹配到prize1
參考博主:jmeter正則表達(dá)式提取html,Jmeter 中正則表達(dá)式提取器Regular Expression Extractor_劉二婷ttt的博客-CSDN博客
注意:
在其他例子中,正則表達(dá)式第一個(gè)或者第n個(gè)表達(dá)式匹配到的個(gè)數(shù)并不是唯一一個(gè),那么這個(gè)時(shí)候,就要利用匹配數(shù)字來(lái)限定自己到底拿取的是哪一個(gè)。
那么這個(gè)時(shí)候就可以得出結(jié)論,匹配數(shù)字是可以是進(jìn)一步的篩選。
參考博主:
Jmeter—正則表達(dá)式提取器:模板&匹配數(shù)字詳解_jmeter正則匹配_zhangkezkzk的博客-CSDN博客
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-544336.html
總結(jié)
本篇文章,主要是對(duì)正則表達(dá)式的運(yùn)用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-544336.html
到了這里,關(guān)于Jmeter接口關(guān)聯(lián)(三)【使用正則表達(dá)式提取值】以及正則表達(dá)式提取器中模板的含義及用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!