之前我們都是使用.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中的引數化。