最便宜的網(wǎng)站建設(shè)公司百度品牌廣告是什么
Jmeter用于接口測(cè)試時(shí),后一個(gè)接口經(jīng)常需要用到前一次接口返回的結(jié)果,應(yīng)該如何獲取前一次請(qǐng)求的結(jié)果值,應(yīng)用于后一個(gè)接口呢,拿一個(gè)登錄的例子來(lái)說(shuō)明如何獲取。
1、打開(kāi)jmeter, 使用的3.3的版本,新建一個(gè)測(cè)試計(jì)劃,在測(cè)試計(jì)劃里新建一個(gè)線程組,新建一個(gè)登錄的http請(qǐng)求,如圖所示:
2、查看登錄返回的結(jié)果:
3、充值接口需登錄后才能操作,此時(shí)可以使用cookie方式,驗(yàn)證此用戶(hù)已經(jīng)登錄,在充值接口里添加cookie管理器:
這里的sign就是上一個(gè)登口接口返回的sign值,
4、在登錄請(qǐng)求下新建一個(gè)后置處理器,提取返回結(jié)果值:
?5、查看接口運(yùn)行結(jié)果:
總結(jié): 以上就是jmeter的關(guān)聯(lián)實(shí)現(xiàn),如果有其他的接口需要前一次請(qǐng)求的結(jié)果,也可以添加的后置處理器提取變量,作用于后一個(gè)接口中,實(shí)現(xiàn)參數(shù)動(dòng)態(tài)變化。?
關(guān)于正則表達(dá)式的舉例說(shuō)明:
1、提取單個(gè)字符串:
假如想匹配Web頁(yè)面的如下部分:name = "file" value = "readme.txt">并提取readme.txt。一個(gè)合適的正則表達(dá)式:name = "file" value = "(.+?)">。
():封裝了待返回的匹配字符串。
.:匹配任何單個(gè)字符串。
+:一次或多次。
?:不要太貪婪,在找到第一個(gè)匹配項(xiàng)后停止。
2、提取多個(gè)字符串:
假如想匹配Web頁(yè)面的如下部分:name = "file.name" value = "readme.txt">并提取file.name和readme.txt。一個(gè)合適的正則表達(dá)式:name = "(.+?)" value = "(.+?)"。這樣就會(huì)創(chuàng)建2個(gè)組,分別用于$1$和$2$
比如:
引用名稱(chēng):MYREF
模板:$1$$2$
如下變量的值將會(huì)被設(shè)定:
MYREF: file.namereadme.txt
MYREF_g0: ?name = "file.name"value = "readme.txt"
MYREF_g1: file.name
MYREF_g2: readme.txt
在需要引用地方可以通過(guò):${MYREF}, ${MYREF_g1進(jìn)行使用。
當(dāng)請(qǐng)求之間有依賴(lài)關(guān)系,比如一個(gè)請(qǐng)求的入?yún)⑹橇硪粋€(gè)請(qǐng)求返回的數(shù)據(jù),這時(shí)候就需要用到關(guān)聯(lián)處理,Jmeter可以通過(guò)“后置處理器”中的“正則表達(dá)式提取器”來(lái)處理關(guān)聯(lián)。
簡(jiǎn)單的關(guān)聯(lián)
比如在訪問(wèn)百度首頁(yè)時(shí)響應(yīng)數(shù)據(jù)里面有一個(gè)title
<title>百度一下,你就知道</title> 我就想在其他的請(qǐng)求中引用這個(gè)title
添加正則表達(dá)式提取器并設(shè)置如下:
添加一個(gè)關(guān)聯(lián)請(qǐng)求來(lái)驗(yàn)證這個(gè)關(guān)聯(lián):
執(zhí)行后我們看到關(guān)聯(lián)成功了
復(fù)雜一點(diǎn)的關(guān)聯(lián),像取正則表達(dá)式結(jié)果里面多個(gè)值
比如一個(gè)請(qǐng)求的響應(yīng)數(shù)據(jù)如下:
我們嘗試來(lái)提取0.0,84956.0,1019,3這四個(gè)數(shù)據(jù),添加正則表達(dá)式提取器做如下設(shè)置
引用名稱(chēng): 引用名稱(chēng)和引用的方法,不用多解釋,和變量參數(shù)化差不多。
正則表達(dá)式: 凡是要被引用的部分都替換成圓括號(hào),括號(hào)內(nèi)具體的表達(dá)式您可以單獨(dú)查閱正則表達(dá)式相關(guān)的知識(shí)。
模板: 代表從正則表達(dá)式結(jié)果引用的樣式,其實(shí)結(jié)果是一組,而不是一個(gè)。$0$代表這一組結(jié)果的全部,$1$代表這一組結(jié)果的第1個(gè),以此類(lèi)推;
$1$$2$代表該正則表達(dá)式一組結(jié)果中的第1個(gè)和第2個(gè),倆結(jié)果挨在一起中間沒(méi)有間隔;
$3$,$4$代表該正則表達(dá)式一組結(jié)果中的第3個(gè)和第4個(gè),倆結(jié)果間有一個(gè)逗號(hào)相連。
匹配數(shù)字: 0代表正則表達(dá)式結(jié)果組中隨機(jī),1代表全部。
缺省值: 當(dāng)引用不對(duì)時(shí)顯示傳遞的信息,通暢寫(xiě)一個(gè)ERROR。
如上設(shè)置好正則表達(dá)式提取器后,我們可以添加一個(gè)被關(guān)聯(lián)的驗(yàn)證請(qǐng)求,如下:
事實(shí)上,myref_g0,myref_g1...myref_g4 是正則表達(dá)式的結(jié)果組,而myref才是被模板控制提取出來(lái)結(jié)果,這里為了更清晰的觀察正則表達(dá)式的結(jié)果組才在驗(yàn)證請(qǐng)求中添加這么多參數(shù),實(shí)際使用是用一個(gè)myref和模板配合就可以了。
myref_g0={"rent":0.0,"price":84956.0,"totalprice":1019,"roomType":3}
myref_g1=0.0
myref_g2=84956.0
myref_g3=1019
myref_g4=3
1. 模板 $0$
2.模板$1$$2$
3.模板$3$,$4$
?
另外對(duì)于匹配數(shù)字,目前我只看到 0和1,取其他整數(shù)的情況也許還有,那一定是更復(fù)雜一點(diǎn)的情況,目前0或1對(duì)我來(lái)說(shuō)已經(jīng)夠用了,以后遇到其他情況再來(lái)更新吧?!?/p>
?