背景:為實現對app的banner接口的回歸,數據由運營配置,斷言時不好直接對數據內容進行判斷,所以選擇對banner數量進行校驗。返回值為json格式,所以Jmeter中需要實現獲取json數組的長度,並進行判斷。
一、實現獲取返回值中json數組的長度,采用JsonPathExtrator插件來實現
首先去下載 JsonPathExtrator,下載地址,此處是直接下載Jmeter的插件管理器,下載后放在lib/ext目錄下,然后重啟jmeter,在options多了一個菜單plugins manager,點擊打開插件管理器,切換到avaliable plugins,搜索json,勾選下方出現的JSON/YAML plugins,然后點擊右下角apply changes and restart jmeter,等下載好后會自動重啟
重啟之后如圖新建一個json path extrator,
Destination Variable Name:變量命名,bannerLength。會放到jmeter全局變量vars中,后續隨時可取出來用
JSONPath Ecpression:json表達式,值$.result.banner.length(),此處$為整個返回值json體
Default Value:當json返回體中未取到值時取默認值
二、實現對全局變量中的長度做數據大小對比。
這里查了jmeter全部斷言類型,沒有可判斷大小的,都是包含,等於等比較類型,唯一一個size assertion是對byte做大小判斷,不符合我的需求。於是還是得采用代碼來,最后選擇使用beanshell assertion。
新建一個bean shell assertion,代碼如下,從全局變量中取出來的值是string類型,需要先轉一下int。此處我需要校驗長度大於1,即保證banner至少有2條則為正常。
Integer bannerLen = Integer.parseInt(vars.get("bannerLenth")); if(bannerLen>1){ log.info("banner數量超過2條,測試通過"); }else{ Failure = true; log.info("banner數量少於2條,請手動查看!"); }
三、運行結果:
1、察看結果數:
通過:
不通過:
2、查看日志
打開日志面板:菜單欄:選項->logViewer
代碼中,將需要查看的參數打到日志中:log.info("xxxxx"); 運行之后即可查看結果
通過:
不通過: