之前我們都是使用.csv
格式的數據文件實現了JMeter的參數化,今天我們演示使用.txt
格式的數據文件實現JMeter的參數化。
需求:我們以一個登陸接口為例。
發送登錄請求的時候,我們需要傳遞兩個參數:phone
和password
。
針對這個登錄接口設計5條用例,如下:
- 正常登錄。
- 手機號未注冊,即:手機號填寫錯誤。
- 手機號不合法,即:手機號填寫錯誤位數不對或為空。
- 手機號或密碼錯誤,即:密碼錯誤。
- 密碼不合法,即:密碼為空。
1、測試計划中的元件
添加元件操作步驟:
- 創建測試計划。
- 創建線程組:
選中“測試計划”右鍵 —> 添加 —> 線程(用戶) —> 線程組
。 - 在線程組中,添加配置元件"HTTP信息頭管理器"組件:
選中“線程組”右鍵 —> 添加 —> 配置元件 —> HTTP信息頭管理器
。 - 在線程組中,添加配置元件
CSV Data Set Config
組件:選中“線程組”右鍵 —> 添加 —> 配置元件 —> CSV數據文件設置
。 - 在線程組中,添加取樣器“HTTP請求”組件:
選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求
。 - 在線程組中,添加監聽器“察看結果樹”組件:查看結果,
選中“線程組”右鍵 —> 添加 —> 監聽器 —> 察看結果樹
。
最終測試計划中包含的元件如下:
點擊運行按鈕,會提示你先保存該腳本,腳本保存完成后會直接自動運行該腳本。
2、數據文件內容
創建一個.txt
文件,名為login_data.txt
,然后根據需求編輯數據文件內容,這次我們不加列表明。
然后使用Notepad++
打開該文件,點擊“編碼” —> 轉為UTF-8編碼,防止中文亂碼。
最終所得到的.txt
格式文件的內容如下:
3、線程組元件內容
如果需要使用.txt
文件中所有的數據,需要設置線程組的線程數或循環次數。
因為在CSV數據文件設置組件,有Recycle on EOF
和Stop thread on EOF
選項的關系,所以設置線程數和循環次數都可以實現,使用數據文件中的每一組數據進行測試。
如下圖所示:
4、HTTP信息頭管理器組件內容
因為我們要使用Post請求發送Json數據,所以需要在請求頭中設置Content-Type=application/json
。
如果我們不在請求頭中進行設置,默認請求頭的Content-Type
值為text/plain
。(這在前面的Post請求文章中有詳細的說明)
如下圖所示:
5、CSV數據文件設置組件內容
如下圖所示:
我一般常用操作,簡單說明:
- 文件名:就直接瀏覽選擇文件即可,也就是使用數據文件的絕對路徑。
- 文件編碼選擇
UTF-8
。 - 變量名稱:這里定義的就是參數化變量的引用名稱,要與數據文件中的列相對應,中間用逗號分割。
- 忽略首行:選擇False,因為這次我們沒有添加列名。如果數據文件中首行寫的是變量名稱,選擇忽略首行。
- 分隔符:如果
.txt
文件中的數據,使用的是逗號隔開,就是默認值。如果是制表符,就用\t
表示。 - 是否允許帶引號?:如果變量值中有引號就選擇True,沒有則默認False即可。
- 其他一般默認選擇。如果需求看上面說明中寫的很詳細,按工作中實際情況選擇。
6、HTTP請求組件內容
在JMeter中使用參數化變量的格式:${變量名}
。
編輯登錄接口內容,如下圖所示:
我們可以看到${變量名}
中的引用變量名,是以CSV數據文件設置組件中變量名稱中定義變量名為准。如果不在變量名稱欄中定義任何內容,就以數據文件中的標題列名為引用變量名。
7、腳本運行結果
該測試腳本運行結果如下圖所示:
我們可以看到,一共發送了5次請求,每次請求使用的參數值都是不同的,並且返回結果的預期也與我們設想的一樣。
這樣就演示了,使用.txt
文件作為數據文件,實現JMeter中的參數化。