一、基础信息
所用jmeter版本:jmeter4.0
所记录功能名称:JSON Extractor
二、使用需求
在对返回结果较复杂且为json结构的HTTP请求进行提取某一个值,以用作其他接口使用或者用来断言的等。
三、使用方法
1、添加步骤:选择线程组中的HTTP请求——右键“添加”——后置处理器——JSON Extractor
图示如下:
2、实例说明
这一过程主要说明如何去写JSON Extractor匹配表达式以及如何去验证自己写的JSON Extractor是否正确
{为了方便看,查看json的目录层级用抓包的结果展示,jmeter返回的不能收缩,不方便查看}
√、我们使用JSON Extractor匹配第一层级内容message的值(为了方便查看把不需要的层级给收起来了 )。 抓包查看返回的结构如下:
使用jmeter的查看结构树中的 json path expression可以测试自己所写的JSON Extractor是否正常。测试结果如下:
√、我们使用JSON Extractor匹配第二层级内容total的值(为了方便查看把不需要的层级给收起来了 )。 抓包查看返回的结构如下:
使用jmeter的查看结构树中的 json path expression可以测试自己所写的JSON Extractor是否正常。测试结果如下:
√、我们使用JSON Extractor匹配第三层级内容id的值(为了方便查看把不需要的层级给收起来了 )。 抓包查看返回的结构如下:
使用jmeter的查看结构树中的 json path expression可以测试自己所写的JSON Extractor是否正常。测试结果如下:
注:关于用到的一个[0]会在后边说明。
√、关于匹配一个数组的内容的用法。
差不多了,不同层级的匹配实例说明的都已经说的可以了,照葫芦画瓢应该可以学会一些 。但是这个过程中还有一些需要说明的东西后边一起说明~~~。
四、要学会用
前一个过程说明了如何去写JSON Extractor匹配表达式以及如何去验证自己写的JSON Extractor是否正确,接下来这一个过程主要记如何去使用写的JSON Extractor匹配表达式。
添加了两个HTTP请求,目录如下:
实例:获取待出库单列表接口和查看待出库单详情接口,需要实现的过程是:先获取待出库单列表,然后使用JSON Extractor获取列表中其中一个stockOutId的值然后在第二个接口中去使用,并返回内容。
再来看JSON Extractor中的内容,其实就是直接把在json path expression测试验证正确的表达式复制到这里来就行了。
这咋突然感觉没啥可说得了呢,如何写已经描述了,如何用也图示了。
把几个参数标注一下吧
names of created Variable :保存的变量名,后面使用${变量名}引用,如:${stockOutId}
JSON Path expressions:上一步中调试通过的json path表达式,如果:$.data.list[0].stockOutId
Match No.(0 for Random):匹配数字(0代表随机,1代表第一个,-1代表所有)
Default Values:找不到时默认值,一般设置为NOT FOUND
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作。
五、特别关注
1、json串 []表示对象组成的数组,{}表示对象
2、如果需要同时匹配多个值,可以如图设置
3、在第二步中list[0]的用法说明:[0] 表示匹配第一个值,[1] 表示匹配第二个值,[*] 表示匹配所有的值,如图:
4、JSON Extractor主要用于匹配返回数据结构为json的参数提取