使用場景:
例如:模擬多用戶登陸時
參數化兩種方式:
方式一:使用函數助手
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未執行