首页 > 技术文章 > [Jmeter学习笔记3]实现对http请求返回值中的json数组长度判断大小

inging44 2019-12-06 09:52 原文

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

    通过:  

    

    不通过:

    

推荐阅读