文章介紹了如何使用JMeter和CSV文件實現數據驅動測試,包括準備CSV文件、配置CSV控制元件、設置HTTP請求和循環控制器,以及斷言和查看結果。注意層級設置和預期結果的確認。
聲明:本文所記錄的僅本次操作學習到的知識點,其中商城IP錯誤,請自行更改。
背景:一個接口的不同情況,其實就是請求參數不一樣、期望結果不一樣。把這些不一樣的東西都提取出來進行管理,下次可以直接使用。因此需要用到【數據驅動-參數化】。
思路:
- 準備文件;
- 配置CSV控制元件--引用文件、設置變量名;
- 接口請求引用這些變量;
- 因為需要運行多次,需要加循環控制器;
- 運行后查看結果樹。
1.認識JMeter
(1)CSV Data Set Config
??CSV格式的數據集配置。很多配置數放在一個文檔里面,然后上傳到JMeter里,實現數據驅動。
2.CSV Data Set Config
(1)準備好配置文件
① 首行為標題行,顯示變量名;
② 從第二行開始顯示變量值,每個值都是按照首行變量名的順序顯示;
③ 有為空的變量值,不能省略,為空顯示;
④ 所有標點符號都是英文符號;
⑤ 文件格式最好為筆記本 .txt 格式(常用的格式);
![]()
(2)新建【CSV Data Set Config】
右擊【線程組】【添加】【配置元件】【CSV Data Set Config】
![]()
(3)配置【CSV Data Set Config】
① 文件名:點擊【瀏覽】,選擇準備好的【登錄】文件。
② 文件編碼:UTF-8。
③ 變量名稱:配置文件中首行的變量名(直接復制粘貼即可)。CASEName,accounts,pwd,res
④ 忽略首行:True(首行為標題行,不是參數值)。
![]()
3.HTTP請求默認值-SIT環境
雖然本次不需要設置默認值,建議養成習慣,方便多環境測試。
![]()
4.循環控制器
(1)新建【循環控制器】
右擊【線程組】【添加】【邏輯控制器】【循環控制器】
![]()
(2)配置【循環控制器】:
① 循環次數:根據CSV配置文件中的數據來控制循環次數,一次循環就是讀取一行值(忽略首行),一共4行值,就只要讀取4次。
![]()
5.HTTP請求【登錄】
(1)新增【登錄】
??在【循環控制器】層級下新增【登錄】HTTP請求。
![]()
(2)設置【登錄】
① 直接復制粘貼上個操作的【登錄】。
② 參數值: ${變量名} :注意變量名需與【CSV數據文件設置】中的變量名一致。
![]()
(3)設置【JSON斷言】
??由于CSV配置文件中的每行數據的預期結果不一樣,所以【斷言】的預期結果也不能固定為“登錄成功”;
??注意!這里兩個地方獲取值的方式不一樣:
????一個是獲取響應數據中的字段值,通過JSONPATH方式取值,$.字段名。
????一個是獲取變量名稱的參數值,通過函數 ${變量名} 的方式。
①預期結果:${res},變量名res是【CSV數據文件設置】中的變量名。
![]()
7.查看結果樹
①層級注意:【循環控制器】應該在【CSV數據文件設置】層級外面。
??問題:四次登錄都是同一個用戶【20200102】登錄成功,響應數據除了【token】其它字段值都一致。
??原因:JMeter線程組是從上往下執行,第一次讀取【CSV數據文件設置】中的數據,是從第2行(忽略首行)開始,讀取第2行數據,然后執行到【控制循環器】時,循環執行了4次。后面第3行、第4行等數據都沒有機會再獲取了,因為【循環控制器】執行完后,整個線程組就跑完了。
![]()
解決:把【CSV數據文件設置】放在【循環控制器】層級下面,【登錄】的前面。
![]()
②預期結果不一致(公司比較較真)
??一定要有一個能夠確認需求的人去確認,不要測試自己跟開發扯,沒意義。
![]()