jmeter從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)并作為變量傳輸
最近一個(gè)項(xiàng)目是要先發(fā)一個(gè)邀請(qǐng),生成一個(gè)邀請(qǐng)id,然后填寫(xiě)對(duì)應(yīng)邀請(qǐng)?jiān)偬峤?,這里就是后一個(gè)接口需要用到前一個(gè)接口生成的邀請(qǐng)id,但是第一個(gè)接口并沒(méi)有返回一個(gè)邀請(qǐng)id,此時(shí)就無(wú)法用正則表達(dá)式提取返回結(jié)果中的邀請(qǐng)id了,所以只能從數(shù)據(jù)庫(kù)中查詢出邀請(qǐng)id傳輸?shù)较乱粋€(gè)接口中,因此,今天我們來(lái)看看jmeter從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)并作為變量傳輸
首先是用jmeter連接數(shù)據(jù)庫(kù),我這篇博客中(https://www.cnblogs.com/jasmine0627/p/9493314.html)已經(jīng)做了詳細(xì)講解,因此這里不再重述
1、添加JDBC Request,并設(shè)置相關(guān)信息

ariable Name:?數(shù)據(jù)庫(kù)連接池的名字,需要與上面配置的JDBC Connection Configuration中Variable Name Bound Pool的Variable Name相同?
Query:填寫(xiě)的sql語(yǔ)句未尾不要加“;”?
Parameter valus:參數(shù)值?
Parameter types:參數(shù)類型,可參考:Javadoc for java.sql.Types?
Variable names:保存sql語(yǔ)句返回結(jié)果的變量名?
Result variable name:創(chuàng)建一個(gè)對(duì)象變量,保存所有返回的結(jié)果?
Query timeout:查詢超時(shí)時(shí)間?
Handle result set:定義如何處理由callable statements語(yǔ)句返回的結(jié)果
?
variables names設(shè)置為A,B,C,那么如下變量會(huì)被設(shè)置為:
A_#=2 (總行數(shù))
A_1=第1列, 第1行
A_2=第1列, 第2行?
C_#=2 (總行數(shù))?
C_1=第3列, 第1行
C_2=第3列, 第2行
如果返回結(jié)果為0,那么A_#和C_#會(huì)被設(shè)置為0,其它變量不會(huì)設(shè)置值。
如果第一次返回6行數(shù)據(jù),第二次只返回3行數(shù)據(jù),那么第一次那多的3行數(shù)據(jù)變量會(huì)被清除。
可以使用${A_#}、${A_1}...來(lái)獲取相應(yīng)的值
2、在http請(qǐng)求中加入變量

invite_id_N:N為數(shù)字,指取第幾個(gè)數(shù)
------------------------------------------------------------------------------------------------
實(shí)際中,我們是取出多個(gè)值,循環(huán)傳入數(shù)據(jù)庫(kù)
1、添加循環(huán)控制器:線程組--邏輯控制器--循環(huán)控制器

2、目標(biāo)接口放入到循環(huán)控制器下,另外添加一個(gè)計(jì)數(shù)器,因?yàn)槲覀內(nèi)〉闹凳歉鶕?jù)${invite_id_N}來(lái)取的,那么這個(gè)N可以通過(guò)計(jì)數(shù)器遞增的方式獲得
?

3、計(jì)數(shù)器

4、通過(guò)函數(shù)助手獲取嵌套函數(shù)

函數(shù)__V可以用于執(zhí)行變量名表達(dá)式,并返回執(zhí)行結(jié)果。它可以被用于執(zhí)行嵌套函數(shù)引用(目前JMeter不支持)。
例如,如果存在變量A1、A2和N=1,則:
${A1}:能正常工作。
${A${N}}:無(wú)法正常工作(嵌套變量引用)。
${__V(A${N})}:可以正常工作。A${N}變?yōu)锳1,函數(shù) __V返回變量值A(chǔ)1。
5、運(yùn)用在目標(biāo)接口中
?

來(lái)源鏈接:https://www.dianjilingqu.com/463805.html