背景:为实现对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"); 运行之后即可查看结果
通过:
不通过: