Jmeter 如何把數據庫的數據依次獲取做爲參數傳入下一個請求?附栗子

某一天碰到一個問題,以爲頗有必要整理一篇文章出來~java

 

由於項目的緣由,假設咱們要實現以下要求: 從數據庫的用戶表裏獲取用戶信息,並做爲參數所有傳遞給登陸請求,分別完成登陸操做。mysql

1、jmeter鏈接數據庫

一、添加JDBC Connection Configuration(右鍵測試計劃-->配置元件-->JDBC Connection Configuration)
二、配置數據庫鏈接信息,其中
  • 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: 數據庫的密碼
三、導入mysql驅動包
  • 下載好mysql的驅動包(mysql-connector-java-5.1.7-bin.jar),放到jmeter的lib目錄下
  • 選中測試計劃,添加mysql驅動包
  •  

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

一、添加線程組-->右鍵線程組-->添加jdbc request,並作好設置
二、添加Debug PostProcessor用於查看變量phone值的獲取,添加查看結果樹並運行;獲得如下結果。說明jmeter發起的jdbc請求及變量設置正常

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

接下來就要思考怎麼將查庫獲得的用戶手機號,做爲參數傳遞給下一個登陸請求。這裏須要引用到 ForEach控制器sql

一、添加ForEach控制器(右鍵線程組-->邏輯控制器-->ForEach控制器),並先嘗試以下設置
  • 輸入變量的前綴:phone; 從以前的jdbc request設置的變量得知,咱們要取的值爲phone_一、phone_二、phone_3......,因此這裏輸入phone
  • Start index for loop:0; 變量循環啓動的索引,第一個元素起始索引+1
  • End index for loop:6; 變量循環結束的索引。因此這裏是取值phone_一、phone_二、...、phone_6
  • 輸出的變量名稱:t_phone; 用於替換循環下的請求的變量
二、在ForEach控制器下添加登陸請求,並進行變量引用
三、運行後,查看結果,成功從庫裏獲取了前6個用戶手機號,並分別成功登陸

以上這種處理須要自行查庫獲知總共有多少個用戶,再去設置ForEach控制器的End index for loop值(設置爲用戶總數),就能夠將庫裏全部用戶進行參數傳值登陸了;數據庫

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

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

實操:測試

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