以Json形式的數(shù)據(jù)格式實(shí)現(xiàn)JMeter參數(shù)化
參數(shù)化就是動(dòng)態(tài)的獲取并設(shè)置數(shù)據(jù),當(dāng)執(zhí)行批量操作時(shí),如批量插入或批量刪除,之前每執(zhí)行完一次就需要修改一次,效率太低,參數(shù)化可以代替人工獲取并設(shè)置數(shù)據(jù),安全且高效!
我們本篇文章演示在請求中,以Json形式的數(shù)據(jù)格式,實(shí)現(xiàn)JMeter參數(shù)化。
我們以小項(xiàng)目學(xué)院管理系統(tǒng)為例,下載地址:點(diǎn)擊下載,里面有詳細(xì)的啟動(dòng)配置說明和API接口文檔。
接口文檔如下:
學(xué)院-新增 1) 請求方法:POST 2) 請求地址:http://127.0.0.1:8000/api/departments/ 3) 請求JOSN報(bào)文:(需要Content-Type=application/json) 4) 調(diào)用傳入的json串如下(可新增多條,之間用,隔開): { "data": [ { "dep_id":"T01", "dep_name":"Test學(xué)院", "master_name":"Test-Master", "slogan":"Here is Slogan" } ] } 5) 新增成功返回報(bào)文: { "already_exist": { "results": [], "count": 0 }, "create_success": { "results": [ { "dep_id": "T02", "dep_name": "Java學(xué)院", "master_name": "Java-Master", "slogan": "java" } ], "count": 1 } } 6) 新增失敗id已存在-返回報(bào)文: { "already_exist": { "results": [ { "dep_id": "T01", "dep_name": "Test學(xué)院", "master_name": "Test-Master", "slogan": "Here is Slogan" } ], "count": 1 }, "create_success": { "results": [], "count": 0 } } 7) 新增失敗json格式錯(cuò)誤: { "status_code": 400, "detail": "請求體參數(shù)格式錯(cuò)誤。" }
1、使用“CSV數(shù)據(jù)文件設(shè)置”組件實(shí)現(xiàn)參數(shù)化
例如:現(xiàn)在有一個(gè)需求,實(shí)現(xiàn)批量添加學(xué)院信息。
(1)測試計(jì)劃中的元件
添加元件操作步驟:
- 創(chuàng)建測試計(jì)劃。
- 創(chuàng)建線程組:
選中“測試計(jì)劃”右鍵 —> 添加 —> 線程(用戶) —> 線程組
。 - 在線程組中,添加配置元件"HTTP信息頭管理器"組件:
選中“線程組”右鍵 —> 添加 —> 配置元件 —> HTTP信息頭管理器
。 - 在線程組中,添加配置元件
CSV Data Set Config
組件:選中“線程組”右鍵 —> 添加 —> 配置元件 —> CSV數(shù)據(jù)文件設(shè)置
。 - 在線程組中,添加取樣器“HTTP請求”組件:
選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求
。 - 在線程組中,添加監(jiān)聽器“察看結(jié)果樹”組件:查看結(jié)果,
選中“線程組”右鍵 —> 添加 —> 監(jiān)聽器 —> 察看結(jié)果樹
。
最終測試計(jì)劃中包含的元件如下:
點(diǎn)擊運(yùn)行按鈕,會(huì)提示你先保存該腳本,腳本保存完成后會(huì)直接自動(dòng)運(yùn)行該腳本。
(2)數(shù)據(jù)文件內(nèi)容
先用Excel表格編輯所需的請求參數(shù),內(nèi)容如下:
我們需要把該文件保存為.csv
格式。
然后使用Notepad++
打開該文件,點(diǎn)擊“編碼” —> 轉(zhuǎn)為UTF-8編碼,防止中文亂碼。
最終所得到的.csv
格式文件的內(nèi)容如下:
(3)線程組元件內(nèi)容
如果需要使用CSV文件中所有的數(shù)據(jù),需要設(shè)置線程組元件的線程數(shù)或循環(huán)次數(shù)。
因?yàn)樵贑SV數(shù)據(jù)文件設(shè)置組件中,有Recycle on EOF
和Stop thread on EOF
選項(xiàng)的關(guān)系,所以設(shè)置線程數(shù)和循環(huán)次數(shù)都可以實(shí)現(xiàn),使用數(shù)據(jù)文件中的每一組數(shù)據(jù)進(jìn)行測試。
(4)HTTP信息頭管理器組件內(nèi)容
因?yàn)槲覀円褂肞ost請求發(fā)送Json數(shù)據(jù),所以需要在請求頭中設(shè)置Content-Type=application/json
。
如果我們不在請求頭中進(jìn)行設(shè)置,默認(rèn)請求頭的Content-Type
值為text/plain
,(這在前面的Post請求文章中有詳細(xì)的說明),并且在接口文檔中也有明確的要求說明。
如下圖所示:
(5)CSV數(shù)據(jù)文件設(shè)置組件內(nèi)容
如下圖所示:
我一般常用操作,簡單說明:
- 文件名:就直接瀏覽選擇文件即可,也就是使用數(shù)據(jù)文件的絕對路徑。
- 文件編碼選擇
UTF-8
。 - 變量名稱:就是把數(shù)據(jù)文件的每個(gè)變量名都填寫上,中間用逗號分割。
- 忽略首行:選擇True,如果CSV文件中首行寫的是變量名稱,選擇忽略首行。
- 分隔符:如果CSV文件中的數(shù)據(jù),使用的是逗號隔開,就是默認(rèn)值。
- 如果是制表符,就用
\t
表示。 - 是否允許帶引號?:如果變量值中有引號就選擇True,沒有則默認(rèn)False即可。
- 其他一般默認(rèn)選擇。
- 如果需求看上面說明中寫的很詳細(xì),按工作中實(shí)際情況選擇。
(6)HTTP請求組件內(nèi)容
在JMeter中使用參數(shù)化變量的格式:${變量名}
。
編輯添加學(xué)院接口內(nèi)容,如下圖所示:
我們可以看到${變量名}
中的引用變量名,是以CSV數(shù)據(jù)文件設(shè)置組件中變量名稱中定義變量名為準(zhǔn)。如果不在變量名稱欄中定義任何內(nèi)容,就以數(shù)據(jù)文件中的標(biāo)題列名為引用變量名。
(7)腳本運(yùn)行結(jié)果
該測試腳本運(yùn)行結(jié)果如下圖所示:
可以看到四個(gè)學(xué)院都成功添加到數(shù)據(jù)庫中了。
我們再去數(shù)據(jù)庫中查看一下,如下圖所示:
這樣就說明我們的JMeter測試腳本實(shí)現(xiàn)成功了。
2、使用“用戶參數(shù)”組件實(shí)現(xiàn)參數(shù)化
接下來我們使用“用戶參數(shù)”組件,來實(shí)現(xiàn)上面的接口。
(1)添加元件操作步驟
創(chuàng)建測試計(jì)劃。
- 創(chuàng)建線程組:
選中“測試計(jì)劃”右鍵 —> 添加 —> 線程(用戶) —> 線程組
。 - 在線程組中,添加配置元件"HTTP信息頭管理器"組件:
選中“線程組”右鍵 —> 添加 —> 配置元件 —> HTTP信息頭管理器
。 - 在線程組中,添加取樣器“HTTP請求”組件:
選中“線程組”右鍵 —> 添加 —> 取樣器 —> HTTP請求
。 - 在取樣器中,添加前置處理器“用戶參數(shù)”組件:
選中“取樣器”右鍵 —> 添加 —> 前置處理器 —>用戶參數(shù)
。 - 在線程組中,添加監(jiān)聽器“察看結(jié)果樹”組件:查看結(jié)果,
選中“線程組”右鍵 —> 添加 —> 監(jiān)聽器 —> 察看結(jié)果樹
。
最終測試計(jì)劃中的元件,如下圖所示:
(2)元件中的內(nèi)容介紹
其實(shí)就是把上面示例中,CSV數(shù)據(jù)文件設(shè)置組件刪除掉,然后在取樣器請求的下一級,添加一個(gè)用戶參數(shù)
組件。
其他元件的內(nèi)容都沒有任何的改動(dòng)。
所以這里指展示用戶參數(shù)
組件中的內(nèi)容,其他組件看上面配置就好。
用戶參數(shù)
組件內(nèi)容如下:
測試結(jié)果也是完全通過,數(shù)據(jù)能夠直接存儲(chǔ)到數(shù)據(jù)庫中。
數(shù)據(jù)庫中,如下圖所示:
說明我們上面的JMeter腳本執(zhí)行成功了。
以上就是Json形式的數(shù)據(jù)格式實(shí)現(xiàn)JMeter參數(shù)化的詳細(xì)內(nèi)容,更多關(guān)于JMeter參數(shù)化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實(shí)現(xiàn)SM3加密和驗(yàn)證的示例代碼
在商用密碼體系中,SM3主要用于數(shù)字簽名及驗(yàn)證、消息認(rèn)證碼生成及驗(yàn)證、隨機(jī)數(shù)生成等,其算法公開,本文給大家詳細(xì)介紹了使用Java實(shí)現(xiàn)SM3加密和驗(yàn)證,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12關(guān)于Java8新特性O(shè)ptional類的詳細(xì)解讀
Optional類是一個(gè)容器類,它可以保存類型T的值,代表這個(gè)值存在。或者僅僅保存null,表示這個(gè)值不存在,原來用 null 表示一個(gè)值不存在,現(xiàn)在Optional 可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常,需要的朋友可以參考下2023-05-05springboot接收前端參數(shù)的四種方式圖文詳解
Spring Boot可以通過多種方式接收前端傳遞的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于springboot接收前端參數(shù)的四種方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11Java編程反射機(jī)制用法入門與實(shí)例總結(jié)
這篇文章主要介紹了Java編程反射機(jī)制用法,簡單說明了反射機(jī)制的概念、原理并結(jié)合實(shí)例形式總結(jié)分析了java反射機(jī)制的簡單使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-12-12Java如何實(shí)現(xiàn)可折疊Panel方法示例
這篇文章主要給大家介紹了關(guān)于利用Java如何實(shí)現(xiàn)可折疊Panel的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07