柚子快報(bào)激活碼778899分享:Jmeter-json斷言
柚子快報(bào)激活碼778899分享:Jmeter-json斷言
目錄
一、JSON斷言說(shuō)明
1、作用
2、使用場(chǎng)景
3、使用頻率
4、使用步驟
二、準(zhǔn)備工作
1、請(qǐng)求
2、測(cè)試步驟
三、測(cè)試計(jì)劃用例
1、Assert JSON Path exists
(1)添加用戶定義變量
(2)添加測(cè)試片段
(3)復(fù)制參數(shù)值
(4)添加HTTP請(qǐng)求
(5)添加JSON提取器
(6)添加調(diào)試后置處理程序
(7)添加HTTP請(qǐng)求默認(rèn)值
(8)復(fù)制所有請(qǐng)求標(biāo)頭
(9)添加HTTP信息頭管理器
2、Additionally assert value
3、Expect null
4、Invert assertion (will fail if above conditions met)
一、JSON斷言說(shuō)明
1、作用
可以對(duì) Jmeter 取樣器的響應(yīng)消息以 JSON 方式進(jìn)行檢查
2、使用場(chǎng)景
當(dāng)返回為 JSON 時(shí),利用 JSON 斷言,我們可以快速檢測(cè)響應(yīng)報(bào)文返回的特征值,進(jìn)而判斷取樣器在業(yè)務(wù)上是否正確
3、使用頻率
比較高,尤其是返回為 JSON 時(shí),為最優(yōu)先的斷言器
4、使用步驟
測(cè)試計(jì)劃右鍵 -> 添加 -> 斷言 -> JSON斷言(JSON Assertion),如圖所示:
(1)Assert JSON Path exists:用于斷言的JSON元素的路徑(JSONPath);檢測(cè)JSONPath是否存在;使用XPATH語(yǔ)法書(shū)寫(xiě)
(2)Additionally assert value:是否額外驗(yàn)證根據(jù)JSONPath提取的值
不勾選,驗(yàn)證JSONPath能否在JSON文檔中找到路徑勾選,驗(yàn)證根據(jù)JSONPath提取值是否符合預(yù)期
(3)Match as regular expression:預(yù)期值是否可以使用正則表達(dá)式
不勾選,預(yù)期值不能使用正則表達(dá)式表示勾選,預(yù)期值可以使用正則表達(dá)式表示
(4)Expected Value:預(yù)期值;支持腳本語(yǔ)言寫(xiě)法
(5)Expect null:若驗(yàn)證提取的值為null,則勾選此項(xiàng);驗(yàn)證null值,還是需要勾選“Additionally assert value”,否則驗(yàn)證的是JSONPath能否找到路徑;預(yù)期值不填表示空字符,與null不等價(jià)
(6)Invert assertion (will fail if above conditions met):若勾選,表示對(duì)斷言結(jié)果取反
注意:除了 null 外,還有一種特殊的值,就是空數(shù)組,預(yù)期值不能不填,需要設(shè)置為:[] ,其中 [] 表示空數(shù)組
二、準(zhǔn)備工作
1、請(qǐng)求
慕慕生鮮:?http://111.231.103.117/#/login
2、測(cè)試步驟
進(jìn)入網(wǎng)頁(yè)后,登錄,頁(yè)面提供了賬戶和密碼 搜索框輸入“蝦” 右鍵檢查或按F12,打開(kāi)調(diào)試工具,點(diǎn)擊搜索
三、測(cè)試計(jì)劃用例
1、Assert JSON Path exists
(1)添加用戶定義變量
測(cè)試計(jì)劃右鍵 -> 添加 -> 配置元件 -> 用戶定義的變量,添加一個(gè)變量:IP,值為 111.231.103.117
(2)添加測(cè)試片段
測(cè)試計(jì)劃右鍵 -> 添加 -> 測(cè)試片段 -> 測(cè)試片段,命名為:HTTP 采樣請(qǐng)求
(3)復(fù)制參數(shù)值
進(jìn)入登陸界面后,在首頁(yè)右鍵檢查打開(kāi)開(kāi)發(fā)者工具,調(diào)試中點(diǎn)擊網(wǎng)絡(luò),找到請(qǐng)求,點(diǎn)擊負(fù)載,復(fù)制參數(shù)值
(4)添加HTTP請(qǐng)求
測(cè)試片段右鍵 -> 添加 -> 取樣器 ->HTTP請(qǐng)求
協(xié)議:GET
路徑:/product/list
參數(shù):從瀏覽器中復(fù)制過(guò)來(lái)
(5)添加JSON提取器
HTTP請(qǐng)求右鍵 -> 添加 -> 后置處理器 -> JSON提取器
勾選 Main sample only--------------只對(duì)主取樣器進(jìn)行提取Name of created variable:var1--------------參數(shù)名為:var1JSON Path expressions:$..list[*].name--------------【$:開(kāi)始符固定的; ..:0到多個(gè)級(jí)別,單個(gè)為根級(jí)別; list:返回的響應(yīng)數(shù)據(jù)結(jié)構(gòu),相當(dāng)于字典,key為list的值; name:list值中名為name鍵的值】Match No. (0 for Random):-1-------------------匹配所有符合正則表達(dá)式的值
(6)添加調(diào)試后置處理程序
HTTP請(qǐng)求右鍵 -> 添加 -> 后置處理器 -> 調(diào)試后置處理程序,參數(shù)默認(rèn)即可
(7)添加HTTP請(qǐng)求默認(rèn)值
HTTP請(qǐng)求右鍵 -> 添加 -> 配置元件 -> HTTP請(qǐng)求默認(rèn)值
協(xié)議:http
服務(wù)器名稱或IP:${IP}
使用變量獲取ip
端口:8083
內(nèi)容編碼:utf-8
(8)復(fù)制所有請(qǐng)求標(biāo)頭
在網(wǎng)頁(yè)中,調(diào)試中點(diǎn)擊網(wǎng)絡(luò),找到請(qǐng)求,點(diǎn)擊標(biāo)頭找到請(qǐng)求標(biāo)頭,復(fù)制所有請(qǐng)求標(biāo)頭
(9)添加HTTP信息頭管理器
HTTP請(qǐng)求右鍵 -> 添加 -> 配置元件 -> HTTP信息頭管理器
(10)添加線程組
測(cè)試計(jì)劃右鍵 -> 添加 -> 線程(用戶)-> 線程組,參數(shù)默認(rèn)即可
(11)添加模塊控制器
線程組右鍵 -> 添加 -> 邏輯控制器 -> 模塊控制器,選擇 HTTP 采樣請(qǐng)求
(12)添加JSON斷言
線程組右鍵 -> 添加 -> 斷言 -> JSON斷言
Assert JSON Path exists:$.data.total 用來(lái)判斷響應(yīng)數(shù)據(jù)——Response Body 中是否存在此路徑
(13)添加查看結(jié)果樹(shù)
線程組右鍵 -> 添加 -> 監(jiān)聽(tīng)器 -> 查看結(jié)果樹(shù)
(14)啟動(dòng)
點(diǎn)擊啟動(dòng),點(diǎn)擊查看結(jié)果樹(shù),查看請(qǐng)求及取樣器信息
如圖,HTTP請(qǐng)求成功,HTTP請(qǐng)求的響應(yīng)數(shù)據(jù)下的Response Body中存在 $.data.total 此路徑,所以斷言成功,請(qǐng)求也是成功的
Assert JSON Path exists:響應(yīng)數(shù)據(jù)——Response Body 中是否存在此路徑;使用XPATH語(yǔ)法書(shū)寫(xiě)
2、Additionally assert value
測(cè)試計(jì)劃設(shè)計(jì)在 3.1 基礎(chǔ)上進(jìn)行修改驗(yàn)證
(1)修改 JSON斷言,勾選 Additionally assert value,Expected Value 輸入 2
Assert JSON Path exists:$.data.total勾選 Additionally assert value(驗(yàn)證根據(jù)JSONPath提取的值,與 Expected Value 輸入框配合使用)Expected Value:2
驗(yàn)證JSONPath提取的值是否與書(shū)寫(xiě)的值一致,與 Additionally assert value 配合使用;與 響應(yīng)數(shù)據(jù)——Response Body 中的 total 值比較
(2)重新啟動(dòng)
如圖,HTTP請(qǐng)求成功,HTTP請(qǐng)求的響應(yīng)數(shù)據(jù)下的Response Body中存在 $.data.total 此路徑,且路徑中 total 的值為2 ,所以斷言成功,請(qǐng)求也是成功的
(3)修改 JSON斷言,勾選 Additionally assert value,Expected Value 為空
Assert JSON Path exists:$.data.total勾選 Additionally assert value
勾選 Additionally assert value,但未寫(xiě) Expected Value 時(shí),驗(yàn)證JSONPath路徑提取的值是否為 ' ',即空的
(4)重新啟動(dòng),點(diǎn)擊查看結(jié)果樹(shù)
如圖,HTTP請(qǐng)求失敗,HTTP請(qǐng)求的響應(yīng)數(shù)據(jù)下的Response Body中存在 $.data.total 此路徑,且路徑中 total 的值為2 ,而JSON斷言中,Expected Value 為空,斷言 total 值是否為空
Additionally assert value:勾選后,驗(yàn)證根據(jù)JSONPath提取的值,是否與 Expected Value 中書(shū)寫(xiě)的值一致
3、Expect null
測(cè)試計(jì)劃設(shè)計(jì)在 3.2 基礎(chǔ)上進(jìn)行修改驗(yàn)證
(1)修改 JSON斷言,勾選 Expect null
Assert JSON Path exists:$.data.total勾選 Additionally assert value勾選 Expect null
驗(yàn)證JSONPath提取的值是否是 null,與 Additionally assert value 配合使用;與 響應(yīng)數(shù)據(jù)——Response Body 中的 total 值比較
(2)重新啟動(dòng),點(diǎn)擊查看結(jié)果樹(shù)
如圖,HTTP請(qǐng)求失敗,HTTP請(qǐng)求的響應(yīng)數(shù)據(jù)下的Response Body中存在 $.data.total 此路徑,且路徑中 total 的值為2 ,而JSON斷言中,勾選了 Expect null,斷言 total 值是否為 null
4、Invert assertion (will fail if above conditions met)
測(cè)試計(jì)劃設(shè)計(jì)在 3.3 基礎(chǔ)上進(jìn)行修改驗(yàn)證
(1)修改 JSON斷言,勾選 Invert assertion (will fail if above conditions met)
Assert JSON Path exists:$.data.total 勾選 Additionally assert value 勾選 Expect null 勾選 Invert assertion (will fail if above conditions met)
(2)重新啟動(dòng),點(diǎn)擊查看結(jié)果樹(shù)
如圖,HTTP請(qǐng)求成功,3.3 中的測(cè)試計(jì)劃是斷言失敗的,勾選 Invert assertion (will fail if above conditions met) 取反,所以斷言成功
Invert assertion (will fail if above conditions met):對(duì)斷言結(jié)果取反 ?
柚子快報(bào)激活碼778899分享:Jmeter-json斷言
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。