Jmeter -- 參數化(函數助手和CSV數據文件配置)


使用場景:

例如:模擬多用戶登陸時

 

參數化兩種方式:

方式一:使用函數助手

1. 創建包含多個登錄名和密碼的文件

可以在文本編輯器中輸入,格式如下:

username,password
username2,password2
username3 , password3

注意中間以逗號分隔,保存后綴名為csv(dat,txt后綴均可)

2. 頂部標題欄選擇options-->function helper dialog 打開函數助手對話框

 3. 將第二步生成的函數填寫到入參位置

4. OK,可以執行啦

執行時會自動調用配置的文件中的對應列內容

 

方式二:使用配置元件

1. 創建包含多個登錄名和密碼的文件(同方式一)

    注意文件編碼方式

 

2. 新建CSV配置元件 Add-->Config Element-->CSV Data Set Config

3. 填寫CSV配置元件參數

參數說明:

1) filename: 文件名,指保存信息的文件目錄,可以相對或者絕對路徑(當csv文件在bin目錄下時,只需給出文件名即可)
2) file encoding: 文件編碼
3) variable names(comma-delimited): 參數名稱(多個名稱之間用逗號隔開)
4) ignore first line(only used if variable names is not empty): false代表全部文件內容都有效, true代表忽略第一行,從第二行開始讀取
5) delimiter(user '\t' for tab): 分隔符(一般用逗號即可)
6) allow quoted data: True設置文件中的參數值都必須用"引號"引起來,False則不需要

7) recycle on EOF: 到了文件尾,是否從頭開始循環讀入。(每次讀取一行,每次讀取的參數僅供一個線程使用,如果線程數超過文本的記錄行數,那么可以選擇true(從頭再次讀取))
8) stop thread on EOF: 到了文件尾,是否停止線程

recycle on EOF和stop thread on EOF的區別:
a. 當Recycle on EOF 選擇true時,Stop thread on EOF選擇true和false無任何意義,通俗的講,在前面控制了不停的循環讀取,后面再來讓stop或run沒有任何意義
b. 當Recycle on EOF 選擇flase時,Stop thread on EOF選擇true:線程4個,參數3個,那么只會請求3次
c. 當Recycle on EOF 選擇flase時,Stop thread on EOF選擇flase:線程4個,參數3個,那么會請求4次,但第4次沒有參數可取,不讓循環,所以第4次請求錯誤

9) sharing mode: 設置線程共享
a. all threads 所有線程:測試計划中所有線程,假如說有線程1到線程n (n>1),線程1取了一次值后,線程2取值時,取到的是csv文件中的下一行,即與線程1取的不是同一行
b. current thread group 當前線程組:假設有線程組A、線程組B,A組內有線程A1到線程An,線程組B內有線程B1到線程Bn。取值情況是:線程A1取到了第1行,線程A2取第2行,現在B1取第1行,線程B2取第2行
c. current thread 當前線程:假設測試計划內有線程1到線程n (n>1),則線程1取了第1行,線程2也取第1行

ps: 簡單起見,一個jmx文件里,只一個測試計划,一個線程組,按上圖配置,修改文件名和列名即可
      配置時,注意線程數和配置文件的行數(一般寫成一致的)

4. OK,可以執行啦

 

 

 

 

PS:recycle on EOF和stop thread on EOF設置,執行結果也可以從日志中分析

      例如:線程數為8,CSV文件中只有4條記錄。recycle on EOF為false,stop thread on EOF為true(即不循環,到文件尾就結束)

執行日志如下:

日志: Stop Thread seen for thread 登陸參數化-config element 1-5, reason: org.apache.jorphan.util.JMeterStopThreadException: End of file:C:/Users/Administrator/Desktop/000.txt detected for CSV DataSet:CSV Data Set Config configured with stopThread:true, recycle:false

 從日志可見,線程1-4分別讀取文件的第1-4行,線程5-8未執行

 


免責聲明!

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



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