Jmeter參數化(_csvread函數、CSV Data Set Config)

方法一、Jmeter自帶的函數助手——_CSVRead函數

1.數據準備:先在excel存儲數據,保存格式選擇csv格式。或在記事本存儲數據,列之間用英文逗號分隔,保存爲txt


2.使用_csvread函數:選項-->函數助手對話框,打開函數助手彈窗,選擇_csvread函數

第一行:輸入csv文件所在的路徑,如F:\test.csv。

第二行:輸入參數所在的列,列數是從0開始數的。如第一列是用戶名對應的列號爲0;第二列是密碼對應的列號爲1。

點擊生成被調用的函數:${__CSVRead(F:\test.csv,0)},在參數對應的值處填入該值。



方法二、CSV Data Set Config

通過Test Plan或者Thread Group的Add->Config Element(配置元件)->CSV Data Set Config,設置變量名後通過${name}引用


以下是CSV Data Set Config各個參數的簡要說明:
FileName:和腳本同路徑只需寫文件名,如果不是則填寫全路徑名稱
File Encoding: 編碼方式,可以不填寫,默認爲ANSI。如果有中文,建議utf-8
Varible Names: 定義文本文件中的參數名,參數之間逗號分隔,定義後可在腳本在以Shell變量的同樣的方式引用。如給出變量名user,pass,通過變量名引用${name},${pwd}

Delimiter(use '\t' for Tab):這個是用來隔開變量的分隔符,如上面的user,pass,那分隔符就是“,”。
Allow Quoated data: 雙引號相關,例:如果參數中需包含逗號","或者雙引號",該項可以選擇True
Recycle on EOF: 設置爲True後,允許循環取值
Stop Thread on EOF: 當Recycle on EOF爲false並且Stop Thread on EOF爲true,則讀完csv文件中的記錄後,停止運行
Sharing Mode: 設置是否線程共享。

All threads:所有線程,所有線程循環取值,線程1取第一行,線程二取下一行。
Current thread group:當前線程組,各個線程組分別循環取值。
Current thread:當前線程,該測試計劃內的所有線程都取第一行。


方法三、用戶定義的變量
選中取樣器,右鍵:添加-配置元件-用戶定義的變量。在列表中填入名稱和值,在別處就用${name}來引用



方法四、正則表達式提取器獲取
在打開登錄頁的時候服務器有返回一個sid,獲取到sid後,然後登錄進入到首頁;所以在這個請求下添加後置處理器:右鍵-添加-後置處理器-正則表達式提取器

第1部分:名稱+註釋,可不修改,只是爲了方便自己識別
第2部分:apply to 默認即可
第3部分:要檢查的字段:主體等選擇,一般我們選擇主體,即服務器返回給我們的頁面主體信息
第4部分:
【引用名稱】:就是參數名稱,在別處引用;如輸入mysid,別處引用的時候使用${mysid}
【正則表達式】:表達式中()內的內容就是要提取的。如sid/(.*?)",表示查找sid/字符串之後的內容,直到出現第一個"時結束;(注意括號裏的表示提取的內容)
【模板】:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來的東東),則可以是$1$(表示只有一組數據),$2$等等,表示解析到的第1個、第2個值給mysid
【匹配數字】:0代表隨機取值,-1代表所有,1代表全部取值
【缺省值】:如果參數沒有取到值,則使用此處的缺省值
注意:運行腳本後,在“察看結果樹”監聽器中,[響應數據]標籤頁先搜索sid出現的位置,及出現的規律,如出現的時候前面會有“sid/”字符串; 調試正則提取表達式的時候,可添加Debug Sampler來查看是否正確提取到對應的值(右鍵-添加-Sampler-Debug Sampler)

方法五、從數據庫獲取
1) 將其中的mysql-connector-java-5.1.34-bin.jar放到Jmeter的lib目錄下
2) 添加“配置元件”->“JDBC Connection Configuration”,設置下列參數:
Variable Name:連接池名稱
Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:端口號/數據庫名稱)
JDBC Driver class:com.mysql.jdbc.Driver
username:連接數據庫的用戶名(如root)
password:連接數據庫的密碼


3) 添加“Sampler”->“JDBC Request”,在SQL Query中輸入查詢語句,如下:
select concat(domain,'+',po_pwd) as userpass from domain;

Variable Name:連接池名稱
注意:該值要和JDBC Connection Configuration中配置的Variable Name值對應,否則會提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;
4) 在JDBC請求中添加“後置處理器”->“正則表達式提取器”,以提取用戶名、密碼爲例,設置正則表達式提取器的參數:
  引用名稱:userPass
  正則表達式:(.*)\+(.*)
  模板:$1$$2$
  使用時,userPass_g1即爲用戶名,userPass_g2即爲對應用戶名的密碼;
  
注意:
(1)+在正則表達式中是關鍵字,所以需要\轉義。
(2)匹配數字,填0或不填,表示隨機讀取,如果填正整數,如1,則不同虛擬用戶或循環固定讀取某行數據。


發佈了61 篇原創文章 · 獲贊 126 · 訪問量 74萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章