Jmeter 如何把數據庫的數據依次獲取作為參數傳入下一個請求?附栗子 [5]


某一天碰到一個問題,覺得很有必要整理一篇文章出來~

 

因為項目的原因,假設我們要實現如下要求: 從數據庫的用戶表里獲取用戶信息,並作為參數全部傳遞給登錄請求,分別完成登錄操作。

一、jmeter連接數據庫

1、添加JDBC Connection Configuration(右鍵測試計划-->配置元件-->JDBC Connection Configuration)
2、配置數據庫連接信息,其中
  • DataBase URL: jdbc:mysql://192.168.88.130:3306/dataname?useUnicode=true&characterEncoding=utf-8
  • 1)192.168.88.130:3306為數據庫的地址和端口號;dataname為數據庫名
  • 2)useUnicode=true&characterEncoding=utf-8 指定字符的編碼解碼格式utf-8
  • JDBC Driver Class : com.mysql.jdbc.Driver 此為mysql數據庫的驅動
  • Username: 數據庫的登錄用戶名
  • Password: 數據庫的密碼

     

     

3、導入mysql驅動包
  • 下載好mysql的驅動包(mysql-connector-java-5.1.7-bin.jar),放到jmeter的lib目錄下
  • 選中測試計划,添加mysql驅動包

     

     

  •  

二、添加jdbc請求並設置變量

1、添加線程組-->右鍵線程組-->添加jdbc request,並做好設置

 

 

2、添加Debug PostProcessor用於查看變量phone值的獲取,添加查看結果樹並運行;得到以下結果。說明jmeter發起的jdbc請求及變量設置正常

 

 

 

 

 

三、實現循環讀取庫的用戶信息,並傳遞到下一個登錄請求

接下來就要思考怎么將查庫得到的用戶手機號,作為參數傳遞給下一個登錄請求。這里需要引用到 ForEach控制器

1、添加ForEach控制器(右鍵線程組-->邏輯控制器-->ForEach控制器),並先嘗試如下設置
  • 輸入變量的前綴:phone; 從之前的jdbc request設置的變量得知,我們要取的值為phone_1、phone_2、phone_3......,所以這里輸入phone
  • Start index for loop:0; 變量循環啟動的索引,第一個元素起始索引+1
  • End index for loop:6; 變量循環結束的索引。所以這里是取值phone_1、phone_2、...、phone_6
  • 輸出的變量名稱:t_phone; 用於替換循環下的請求的變量
2、在ForEach控制器下添加登錄請求,並進行變量引用

 

 

3、運行后,查看結果,成功從庫里獲取了前6個用戶手機號,並分別成功登錄

以上這種處理需要自行查庫獲知總共有多少個用戶,再去設置ForEach控制器的End index for loop值(設置為用戶總數),就可以將庫里所有用戶進行參數傳值登錄了;

 

問題:能不能jmeter自動去獲知數據庫表的用戶數,然后去循環取值進行登錄呢?

當然可以,先用jdbc request查出用戶數,再直接對ForEach控制器的End index for loop值進行設置就ok了

實操:

a、添加一個jdbc請求,查詢用戶表的用戶總數,並設置變量count
b、設置ForEach控制器的End index for loop值
 
c、運行,查看結果成功

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM