Jmeter之參數化


一、參數化

1、指定參數值

  這種方法常用來解決線程組中多個請求共用相同的數據,比如我們所有請求都可能有相同的IP地址,當地址改變時可以一改全改。

  添加用戶定義的變量,右擊線程組->添加->配置元件->用戶定義的變量;

  

  打開用戶定義的變量,添加變量,寫好名稱和值

  

  腳本中用到該值的所有地方都可以引用這個變量名了,引用變量的格式為 ${變量名}

  

  另外,也可以在Test Plan(測試計划)中進行參數設置,這里設置的參數為全局變量,所有請求都可以使用這里配置的參數,如下圖:

  

  使用方法和上面一樣,在請求中用${ip}和${port}替代對應的值

2、借助函數生成參數

  測試過程中,有時候數據不適合被指定,可選擇借助函數來生成,以下是最常用的幾種:

  (1)用函數生成隨機數:(__Random)

      在Jmeter中點擊 選項->函數助手對話框

      

      在彈出的對話框中選__Random,填寫隨機數的范圍,點擊生成按鈕,就看到你需要的字符串了

      

      嘗試在請求中使用生成的隨機數,把剛拷貝的字符串粘貼到請求的參數里

      

      發送請求,查看請求中參數值的情況,參數生效了

      

  (2)用函數生成當前時間:(__time)

      

      

  (3)用函數生成通用的唯一識別碼:(__UUID)

      

3、文件傳參

  用於讀取在文件中維護的參數,如參數文件內容如下:

  

  注意,Jmeter讀取文件總的參數是從第一行就開始了的,千萬不要犯下面的錯誤:

  

  在Jmeter中右擊線程組->添加->配置元件->CSV Data Set Config

  

  打開設置窗口,寫入參數文件的全名(含絕對路徑),變量名,Delimiter就用默認的逗號,表示在准備參數文件時參數表的列之間用逗號隔開  

  

  在請求中引用參數時應該是這樣的:${username}  ${pwd},用它們來頂替對應的參數值  

  Filename:參數文件的全路徑

  File encoding:文件編碼,一般可以不填

  Variable Names:參數名稱,可以填多個,用Delimiter中定義的分隔符隔開就可以

  Delimiter:分隔符,“/t”代表tab鍵,這里一般默認用逗號

  Allow quoted data:是否去掉參數文件中值所帶的引號(選擇True,“test”讀出來就變成了test,選擇False,“test”讀出來還是“test”)

  Recycle on EOF:參數文件中的值是否循環取值(如果文件中有4個值,有6個線程,這里選擇True的話,第5個線程循環取到第一個值,第6個線程循環取到第二個值,如果選擇False的話,第5個線程和第6個線程取不到值)

  Stop thread on EOF:參數文件中的值取完是否停止運行(如果文件中有4個值,有6個線程,這里選擇True的話,第4個線程運行完就停止運行,如果選擇False的話,第5個線程和第6個線程還會繼續運行,取值策略根據Recycle on EOF來取值)

  Sharing mode:線程共享模式,有3個選項,所有線程(All threads)、當前線程組(current threads group)、當前線程(current threads),默認選擇當前線程。這里選擇不同的模式,根據線程組中設置的線程數、循環次數以及循環控制器中設置的循環次數,取值的策略不一樣。具體怎么不一樣,需要大家親自去操作。

4、用戶參數

  用戶參數與文件參數類似,一個參數可以設置多個值,需要添加一個用戶參數,具體操作如下:

  右鍵添加->前置處理器->用戶參數

  

  在用戶參數中填入參數名稱和參數值,可以添加多個參數,每個參數可以使用多個值

  

  取值策略:線程組和循環控制器中的循環次數設置為多次時,每次循環都取第一個值,線程組當中的線程數設置為多個時,則會循環取數

  

  

  在請求中引用參數時應該是這樣的:${name}  ${passwd},用它們來頂替對應的參數值  

5、關聯傳參

  在線程組內,當你想用一個請求的響應結果作為另一個請求的入參時就需要用到關聯

  (1)用正則表達式關聯

      思路是先從某個請求的響應數據中提取你需要的值,在把這個值在另一個請求中入參,操作如下:

      在需要被提取響應數據的請求下添加正則表達式提取器,右擊添加->后置處理器->正則表達式提取器

     

    在正則表達式提取器中填寫 引用名稱,不說也知道用途;正則表達式,最簡單的辦法是在響應數據中把要提取的目標值左右若干字符包含目標值的一行拷貝出來,粘貼到正則表達式框內,在把目標值用一對小括號替換,括號里用添上合適的匹配符本例如(.*); 注意在響應數據中拷貝時盡量避開需要轉義的字符如果不能避開,請轉義;模板通常固定填$1$;匹配數字1代表區匹配的第一個值;缺省值是在匹配失敗時取得的值,通常用來檢查匹配是否成功。

用${age}入參給另一個請求,查看結果傳參成功

  (2)用Json Path Extractor 插件關聯

      只針對Json格式的Response 取值,右擊請求添加->后置處理器->JSON Path Extractor

      

      在JSON Path Extractor中填入引用名和JSONPath Expression

      

      在另一個請求中入參,也和上面的結果一樣轉參成功

      

      注意,JSON Path Extractor這個插件只能在Jmeter3.x以上的版本安裝


免責聲明!

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



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