最近一個項目是要先發一個邀請,生成一個邀請id,然後填寫對應邀請再送出,這裡就是後一個接口需要用到前一個接口生成的邀請id,但是第一個接口并沒有傳回一個邀請id,此時就無法用正規表達式提取傳回結果中的邀請id了,是以隻能從資料庫中查詢出邀請id傳輸到下一個接口中,是以,今天我們來看看jmeter從資料庫擷取資料并作為變量傳輸
首先是用jmeter連接配接資料庫,我這篇部落格中(https://www.cnblogs.com/jasmine0627/p/9493314.html)已經做了詳細講解,是以這裡不再重述
1、添加JDBC Request,并設定相關資訊

ariable Name: 資料庫連接配接池的名字,需要與上面配置的JDBC Connection Configuration中Variable Name Bound Pool的Variable Name相同
Query:填寫的sql語句未尾不要加“;”
Parameter valus:參數值
Parameter types:參數類型,可參考:Javadoc for java.sql.Types
Variable names:儲存sql語句傳回結果的變量名
Result variable name:建立一個對象變量,儲存所有傳回的結果
Query timeout:查詢逾時時間
Handle result set:定義如何處理由callable statements語句傳回的結果
variables names設定為A,B,C,那麼如下變量會被設定為:
A_#=2 (總行數)
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (總行數)
C_1=第3列, 第1行
C_2=第3列, 第2行
- 如果傳回結果為0,那麼A_#和C_#會被設定為0,其它變量不會設定值。
- 如果第一次傳回6行資料,第二次隻傳回3行資料,那麼第一次那多的3行資料變量會被清除。
- 可以使用${A_#}、${A_1}...來擷取相應的值
2、在http請求中加入變量
invite_id_N:N為數字,指取第幾個數
------------------------------------------------------------------------------------------------
實際中,我們是取出多個值,循環傳入資料庫
1、添加循環控制器:線程組--邏輯控制器--循環控制器
2、目标接口放入到循環控制器下,另外添加一個計數器,因為我們取的值是根據${invite_id_N}來取的,那麼這個N可以通過計數器遞增的方式獲得
3、計數器
4、通過函數助手擷取嵌套函數
函數__V可以用于執行變量名表達式,并傳回執行結果。它可以被用于執行嵌套函數引用(目前JMeter不支援)。
例如,如果存在變量A1、A2和N=1,則:
${A1}:能正常工作。
${A${N}}:無法正常工作(嵌套變量引用)。
${__V(A${N})}:可以正常工作。A${N}變為A1,函數 __V傳回變量值A1。