性能测试之JMeter接口关联【JSON提取器】详解
1、JSON提取器介绍
相信做过自动化测试的朋友经常会遇到这样的场景:我想调用系统中的某个业务接口,但是需要先登录系统。也就是现在很多接口的访问,都是需要登录接口的token做为基础。
在JMeter中先访问登录接口,使用后置处理器提取出来token或者Cookie的值,然后将该值带到后续的业务接口中,这时就会用到JSON提取器组件。
为什么要用 JSON 提取器
- JSON是目前大多数接口响应内容的数据格式。
- 在接口测试中,不同接口之间可能会有数据依赖,在JMeter中可以通过后置处理器来提取接口的响应内容。
- JSON 提取器是其中一个可以用来提取响应内容的元件。
2、JSON提取器界面详解
添加JSON提取器组件操作:选中“取样器”右键 —> 添加 —> 后置处理器 —> JSON提取器
。
界面如下图所示:
Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834
下面是JSON提取器组件的详细说明:
- 名称:JSON提取器组件的自定义名称,见名知意最好。
- 注释:即添加一些备注信息,对该JSON提取器组件的简短说明,以便后期回顾时查看。
(1)Apply to
:作用范围(返回内容的取值范围)
Main sample and sub-samples
:作用于父节点的取样器及对应子节点的取样器。Main sample only
:仅作用于父节点的取样器。(选默认的main sample only
就行了)Sub-samples only
:仅作用于子节点的取样器。JMeter Variable Name to use
:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值。
(2)第二部分内容
Names of created variables
:定义引用提取值的变量名,后面接口中使用${变量名}
引用,必填项。JSON Path expression
:填写JSON Path表达式,用来提取某个值。必填项。Match No.(0 for Random)
:表示取值是第几个匹配结果,因为有可能XPath表达式会匹配到多个值。0表示随机,-1表示全部,1代表第一个,2代表第二个,以此类推。(非必填项)Compute concatenation var(suffix_ALL)
:勾选此项后,如果匹配到多个结果,JMeter会使用,
将他们连接起来,存储在的变量中,会自动命名为<variable name>_ALL
。Default Values
:缺省值,如果JSON Path表达式匹配不到值的时候,将使用该默认值。(非必填项)
3、JSON提取器的使用
需求:用户登录系统,并在系统中查询个人信息。
实现思路:
- 登陆系统,记录Cookie信息。
- 提取出用户的ID信息。
- 保持登陆的状态,根据用户ID,查询用户信息。
(1)测试计划内包含的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。 - 在线程组里面,添加配置原件“HTTP Cookie管理器”组件:
选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP Cookie管理器
。 - 在线程组下,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。 - 在取样器下,添加后置处理器“JSON提取器”组件:
选中“取样器”右键 —> 添加 —> 后置处理器 —> JSON提取器
。 - 在线程组下,添加监听器“察看结果树”组件:
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。
提示:需要重复添加的组件这里不重复描述。
最终测试计划中的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
(2)HTTP Cookie管理器内容
什么都不用填写,保持原样即可。
简单说明一下:
- JMeter中自动收集的Cookie,是不会在HTTP Cookie管理器中进行展示的,但是运行后通过查看结果树可以查看到Cookie信息,接受到的Cookie会被自动存储在线程变量中。(使用
Debug Sampler
组件查看) - HTTP Cookie管理器会自动记录每一个请求所产生的Cookie,在后边对同源站点进行的请求中,都可以自动的使用对应Cookie进行发送。
(3)用户登陆请求界面内容
发送一个标准POST请求,参数格式为JSON,这里就不做解释了。
界面内容如下图所示:
4)JSON提取器界面内容
我们在编辑JSON提取器组件之前,一般先请求一下需要提取返回数据的接口。
因为我们需要先查看一下需要提取的数据在什么位置,同时我们也能够提前编写一下JSON Path
表达式。
如下图所示:
然后选择JSON Path Tester
视图模式,先手动编写JSON Path
表达式,看看是否能够取到需要的数据。
如下图所示:
之后我们就可以编写JSON提取器组件界面了,如下:
编写引用名称、JSON表达式、匹配数据选择,如下图:
提示:如果要获取多个元素,则可以在HTTP请求组件中,加入多个后置处理器来提取需要的值。即:每一个后置处理器只能获取一个值。
JSON提取器组件提取出来的数据,会存储在线程变量中,供其他后续接口使用。
(5)查看用户信息请求页面内容
填写接口的基本请求信息,然后把JSON提取器提取出来的数据,作为参数化变量应用到请求中。
如下图所示:
6)查看结果
我们可以看到在第二个请求中,拿到了第一个请求提取出来的用户ID数据。
如下图所示:
再来看看第二个请求响应的结果,可以看到对应用户的信息我们已经查询到了。
提示:可以添加
Debug PostProcessor
(调试后置处理器),或者Debug Sampler
(调试取样器),来查看JSON提取器中,提取出的内容是否正确。注意:正常跑用例时删除或禁用它们。
4、总结
JSON提取器通常在接口返回是JSON格式的数据,并提取数据时用的比较多。提取完参数后,相当于把参数以 key-value
的形式放到参数池,以便后面的请求使用。
注意:不能超前引用。
5、补充:JSON Path表达式说明
JSON提取器用于提取请求返回结果中的某个值或者某一组值,用法比正则表达式要简单,标准写法为$.key
,其中key
为返回结果map中的一个键,如果是多层则继续用.key
进行即可,如果遇到key的value值为一个List,则使用.key[n]
,其中n
为list中元素的编号。
常用JSON Path
表达式使用实例,如下:
- 获取第一层中的某个属性的值:
$.key
。 - 获取List中某个key的value值:
$.result[0].name
。 - 获取列表中的某个列表的属性值:
$.result[1].approver[0]
。 - 获取一个列表下全部的某一个元素:
$.result[*].name
。 - 获取N个值:
取前两条数据:$.result.records[2].id
。
取后两条数据:$.result.records[-2].id
。 - 提取特定条件的某个值:
$.result.records[?(@.object_id==0)].id
。 - 获取固定条件下的多个key的value值:
$.result.records[?(@.object_id==0)].["id","name","is_active"]
。
Jmeter高级性能测试实战https://edu.csdn.net/course/detail/35834
性能测试之JMeter接口关联【JSON提取器】详解相关推荐
- 性能测试之实现接口关联的两种方式:正则表达式提取器和json提取器
关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用. 示例: 1.用户密码进行登录,登录后生成authentication 2.需要将登录接口响应结果中auth ...
- jmeter+接口测试练习+接口关联+Json提取
1.测试用例设计 2.因为要执行多条用例,所以在Jmeter添加了http信息头管理器和http请求默认值. 3.查询用户信息接口需要用到登录的token,但要先登录再把token拿出来传到查询的信息 ...
- Jmeter性能测试之后置处理器Json提取器的使用
用法说明 此提取器用于提取请求返回结果中的某个值或者某一组值,用法比正则表达式要简单,标准写法为$.key,其中key为返回结果map中的一个键,如果是多层则继续用.key进行即可,如果遇到key的v ...
- jmeter如何通过后置处理器提取(正则提取器、json提取器)做接口关联?
一.后置处理器-正则表达式提取器 1.添加正则表达式提取 2.正则表达式提取面板介绍: 引用名称:提取引用名称,下个请求要引用此参数名称,如填写token,下个请求中用${token} 正则表达式:( ...
- JMeter关联:JMeter正则表达式提取器与JSON提取器
JMeter使用正则表达式和JSON提取器实现关联 前言 1 关联的释义与示例 2 常用正则表达式详解 3 正则表达式提取器 3.1 参数详解 3.2 使用示例 4 JSON提取器 4.1 参数详解 ...
- 【爱软测】Jmeter数据关联之json提取器
json提取器 1.添加json提取器 右击http请求 > 添加 > 后置处理器 > json提取器 2.页面功能介绍 apply to(适用于或者作用范围) Main sampl ...
- JMeter从HTTP接口返回的参数中获取数据 - 使用Json提取器
Http接口返回的数据,一般都是json格式的,如果需要提取出其中的某个数据,作为后续其他接口的入参,那么可以使用json提取器. 一.从接口中提取一个数据 以登录接口为例,当登录成功后接口会返回一个 ...
- Jmeter之JSON提取器说明示例
目录 前言 一.获取某一个字段 二.获取相同字段的多个值 三.提取多个字段 前言 在接口测试的时候,通常会遇到上一个接口的响应数据在下一个接口需要使用,那么这里就可以使用JSON 提取器来进行关联. ...
- jmeter的json提取器和json提取器取值
前言: 本人觉得,json提取器比正则提取器的使用场景更多,大部分接口返回值其实是可以通过json提取器取值.正则表达式比我来说易用性不强,推荐直接学json提取器干活 思路: 1.试试怎么提取要取的 ...
最新文章
- 方差,标准差,协方差、期望值
- java exif_照片EXIF信息的读取和改写的JAVA实现
- 6.1 C/S 架构介绍
- XMPP协议简单介绍
- mysql optimizer_mysql 参数optimizer_switch
- 【TypeScript系列教程11】函数的使用
- 发表优质书评,获得管家推荐【51CTO家园读书帮助】
- scala if 语句缩写_Scala If-Else语句示例教程
- Akka的Actor生命周期《Eight》译
- 计算机视觉论文-2021-12-01
- CrossApp推出移动应用开发神器 CrossApp Style
- 微信公众平台开发[1] —— 获取用户Openid及个人信息
- 腾讯地图微信小程序JavaScript SDK
- 嵌入式毕设分享 STM32 wifi照明控制系统 - 智能路灯(毕设分享)
- 微信小程序、app集成微信支付
- codecs.open和open的区别
- 单片机奇偶交替闪烁_单片机控制继电器 使LED灯交替闪烁
- CentOS7.2系统上搭建JDKTomcat详细步骤
- 计算机动漫与游戏制作与影视,中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程...
- 2019-ICML-Towards Graph Pooling by Edge Contraction
热门文章
- win7系统怎么搭建web服务器,win7系统搭建web服务器的操作方法
- golang | 使用结构体抄的学生信息管理系统
- Docker学习总结(38)——开发环境中使用docker run安装Redis再总结
- 软件工程学习总结(1)——软件测试工具详解
- java找不到配置文件_Java项目读取配置文件时,找不到指定的文件???
- TensorFlow的基本运算03
- Asp.netMVC中Html.Partial,RenderPartial,Action,RenderAction区别和用法
- laravel 扩展包
- [20180123]测试SQLNET.EXPIRE_TIME参数.txt
- iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)