在請求過程中,有時我們需要在請求中設置一些變量來測試不同的場景。
提示:在調試請求過程中,無關的請求可以暫時禁用掉,選擇某個暫時不用的請求,右鍵--禁用
Jmeter 支持以下類型變量:所有類型的變量在引用時的格式均為${變量名}
- 用戶自定義變量
- 函數生成變量
- BeanShell 變量
- 數據文件變量
用戶自定義變量
設置步驟: 選中請求——添加——前置處理器——用戶參數 設置變量名稱為 user,值為 hancel
在請求時引用變量如下所示: 變量引用格式為:${user}
函數生成變量
Jmeter 有許多內置的函數,可以生成隨機數。創建步驟:點擊菜單欄選項——函數助手對話框——下拉選擇
__Random()函數 函數配置如下:
BeanShell 變量
什么是 Bean Shell?
-
- BeanShell 是一種完全符合 Java 語法規范的腳本語言,並且又擁有自己的一些語法和方法;
- BeanShell 是一種松散類型的腳本語言(這點和 JS 類似);
- BeanShell 是用 Java 寫成的,一個小型的、免費的、嵌入式的 Java 源代碼解釋器,具有對象腳本語言特性,非常精簡。
- BeanShell 執行標准 Java 語句和表達式,另外包括一些腳本命令和語法。
Jmeter有哪兒些Bean shell?
-
- 定時器:BeanShell Timer
- 前置處理器:BeanShell PreProcessor
- 采樣器:BeanShell Sampler
- 后置處理器:BeanShell PostProcessor
- 斷言:BeanShell 斷言
- 監聽器:BeanShell Listener
CSV數據文件變量
CSV 數據文件變量是指從外部 csv 文件讀取數據出來作為變量。
設置步驟: 選擇請求——添加——配置元件——CSV 數據文件設置
創建 csv 文件(最好不用用記事本創建,推薦用 Nodepad++)文件編碼為 UTF-8 文件內容如下:
user_data.csv
name1,pass1
CSV 數據文件設置如下:
在 Post 請求中引用變量數據如下:
運行之后在查看結果樹中請求選項欄可以看到獲取的變量數據。
CSV 參數化
針對之前的 POST 接口進行如下參數遍歷測試:
接口如下:
http://httpbin.org/post
發送參數:user_data.csv
在之前的 csv 數據文件設置需要需改配置如下:表示把所有數據讀取一遍,且不重復。
- Filename: 指保存信息的文件目錄,可以相對或者絕對路徑。否則會在jmeter日志文件(jmeter.log目錄位置D:\Program Files\apache-jmeter-2.13\bin)中提示:系統找不到指定文件,運行腳本后,登錄失敗。
- File encoding: 保持默認。默認為ANSI
- Variable Names: 給csv文件中各列起個名字(有多列時,用英文逗號隔開列名)便於后面引用
- Delimiter:與 .csv文件的分隔符保持一致。如文件中使用的是逗號分隔,則填寫逗號;如使用的是TAB,則填寫\t;
- Allow quoted data? :是否允許引用數據,是否需要"123" 雙引號內的數據
- Recycle on EOF?:到了文件尾是否循環,True—繼續從文件第一行開始讀取,False—不再循環
- Stop thread on EOF? :到了文件尾是否停止線程,True—停止,False—不停止,注:當Recycle on EOF設置為True時,此項設置無效。
- Sharing mode:共享模式,All threads –所有線程,Current thread group—當前線程組,Current thread—當前線程。
接口請求名稱格式更改為:post請求_參數化${user},方便我們后續查看數據遍歷情況。
最后修改線程組的線程數量,因為數據中有 4 組數據,所以設置為 4.
運行查看結果如下: