接口測(cè)試中,發(fā)送的請(qǐng)求常常是帶token的請(qǐng)求。
首先在登錄系統(tǒng)時(shí)會(huì)獲得token,然后使用后置處理器中的正則表達(dá)式提取token,最后使用BeanShell工具設(shè)置全局變量。
這樣就可以在自動(dòng)調(diào)用token了。
-
觀察響應(yīng)體內(nèi)容
獲取響應(yīng)體中token.jpg -
添加正則表達(dá)式提取器
添加正則式表達(dá)式提取器.jpg -
正則參數(shù)設(shè)置
1引用名稱:就是變量名,調(diào)用使用-1
0
1
2
n$:表示取第n個(gè)模板
4匹配數(shù)字:-1表示匹配全部值,0表示隨機(jī)取值,1表示第一個(gè)值,2表示第二個(gè)值
5缺省值:這個(gè)如果沒(méi)有匹配到,給它定義的一個(gè)默認(rèn)值
正則式參數(shù)設(shè)置.jpg -
查看提取內(nèi)容
如果多個(gè)正則你要看你到底調(diào)用哪個(gè)值來(lái)定,這兒待會(huì)下面截圖例子一看就明白
首先添加Debug Sampler:
添加Bebug Sampler.jpg
然后點(diǎn)擊啟動(dòng),發(fā)生請(qǐng)求,
在查看結(jié)果樹(shù)中查看Debug Sampler:
Debug Sampler中的匹配結(jié)果.jpg
可以看到TOKEN
已經(jīng)被賦值,證明正則式匹配成功。
Ps:TOKEN_g
、TOKEN_g0
、TOKEN_g1
,都是可以被調(diào)用的。
這里因?yàn)橹黄ヅ涞轿ㄒ恢担詻](méi)有被迭代。
在此線程內(nèi)的調(diào)用方法
${TOKEN}
、${TOKEN_g0}
等等。
-
跨線程調(diào)用
以上正則式提取數(shù)據(jù)的調(diào)用只能用于同一線程內(nèi),那么跨線程調(diào)用,還需要添加BeanShell PostProcessor,設(shè)置全局變量。
添加BeanShell PostProcessor.jpg
在Script里面寫(xiě)入其中一段代碼:
//設(shè)置全局變量方法1
{__setProperty(token,${TOKEN})}; //將變量TOKEN的值設(shè)置為全局變量token
//設(shè)置全局變量方法2
String token=vars.get("TOKEN");
props.put("token",token); //設(shè)置全局變量
props.get("token"); //提取全局變量
在其他線程中,可以通過(guò)
${__P(token)}
來(lái)調(diào)用登陸獲取到token了
可以從下圖參考下目錄結(jié)構(gòu)圖及全局變量調(diào)取
在其他線程調(diào)用全局變量.jpg
微信關(guān)注.png