天天看點

jmeter從資料庫擷取資料并作為變量傳輸

最近一個項目是要先發一個邀請,生成一個邀請id,然後填寫對應邀請再送出,這裡就是後一個接口需要用到前一個接口生成的邀請id,但是第一個接口并沒有傳回一個邀請id,此時就無法用正規表達式提取傳回結果中的邀請id了,是以隻能從資料庫中查詢出邀請id傳輸到下一個接口中,是以,今天我們來看看jmeter從資料庫擷取資料并作為變量傳輸

首先是用jmeter連接配接資料庫,我這篇部落格中(https://www.cnblogs.com/jasmine0627/p/9493314.html)已經做了詳細講解,是以這裡不再重述

1、添加JDBC Request,并設定相關資訊

jmeter從資料庫擷取資料并作為變量傳輸

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請求中加入變量

jmeter從資料庫擷取資料并作為變量傳輸

invite_id_N:N為數字,指取第幾個數

------------------------------------------------------------------------------------------------

實際中,我們是取出多個值,循環傳入資料庫

1、添加循環控制器:線程組--邏輯控制器--循環控制器

jmeter從資料庫擷取資料并作為變量傳輸

2、目标接口放入到循環控制器下,另外添加一個計數器,因為我們取的值是根據${invite_id_N}來取的,那麼這個N可以通過計數器遞增的方式獲得

jmeter從資料庫擷取資料并作為變量傳輸

3、計數器

jmeter從資料庫擷取資料并作為變量傳輸

4、通過函數助手擷取嵌套函數

jmeter從資料庫擷取資料并作為變量傳輸

函數__V可以用于執行變量名表達式,并傳回執行結果。它可以被用于執行嵌套函數引用(目前JMeter不支援)。

例如,如果存在變量A1、A2和N=1,則:

${A1}:能正常工作。

${A${N}}:無法正常工作(嵌套變量引用)。

${__V(A${N})}:可以正常工作。A${N}變為A1,函數 __V傳回變量值A1。

5、運用在目标接口中

jmeter從資料庫擷取資料并作為變量傳輸