JMeter进阶系列--JSON提取器

1 概述
接口测试或者性能测试,常常需要动态提取上个请求返回的内容,JMeter工具可以使用后置处理器进行处理,以下是JMeter常用的提取器。

我们最常用的JMeter正则表达式提取器和边界提取器,依赖前后文或者内容格式的稳定,有时匹配多个,无法保证每次精准提取到正确的那一个,导致脚本无法稳定,而Json提取器可以定位到字段,无论字段内容如何变化,都可以精准提取,受前后内容影响不大。
本文将通过理论和实例为大家介绍JMeter的Json提取器。
2 Json提取器
使用JSON- path语法从JSON响应中提取数据,非常类似于正则表达式提取器,它将允许您以一种非常简单的方式提取文本内容。具体可参见JSON路径语法(来源于https://github.com/ Json -path/ Json Path 的官方介绍,大家可以前往获取更详细的内容)。
一、操作符介绍

二、用法介绍
Json操作示例

提取某个字段内容,普遍适用的思路是先定位到节点再提取节点内字段名,如果想获取上图color字段的内容,我们可以写成:$.store.bicycle.color。
在线验证成功:

更多表达式请见下表,可以在网上找提取器进行实战练习(推荐网址:https://www.lddgo.net/string/Jsonpath),输入上面的Json内容和表达式,查看获取到的结果。

3 Json实例1 -提取苍穹界面的pageId
实例:提取首页应用页签的pageId.需要从
返回内容中提取(根据经验所得,如果不知道从哪个请求响应提取pageId,可以将本请求的pageId,向上查找搜索)。
谷歌浏览器“Preview”可以清晰的展示Json格式,推荐使用。
通过“Preview”展开请求的响应内容,我的应用“pageId”如下图所示。

根据1.2的用法介绍,我们可以得出提取该pageId的四种方法。

1)、第一种写法:第一步,确定节点,从上图Preview中可以看到需要提取的应用页签pageId在根节点下的第2个子节点内p字段的第8个子节点,于是表达式为:$[2].p[8]使用JMeter的Json提取器进行验证,验证成功。

第二步,确认节点内的哪个字段,这里取pageId。
于是表达式为$[2].p[8].pageId,如下图,验证成功。

2)、第二种写法:第一步确定节点,拿同节点内的某个键值对来定位,比如这里可以通过a:”showForm”定位到$[2]节点,formId:”tenant_myapp”定位到p[8]节点。

第二步,确定字段,字段为pageId,于是表达式可以写成:
$[? (@.a=="showForm")].p[?(@.formId=="tenant_myapp")].pageId,如下图,验证成功。

3)、第三种写法,通过上面介绍的用法,在我们确认formId: "tenant_myapp"唯一的情况下,可以直接提取符合条件的节点,而不用考虑节点的继承关系。
于是表达式可以写成:$..[?(@.formId=="tenant_myapp")].pageId,(..搜索符合条件的节点)如下图,验证成功。

4)、第四种写法,不考虑节点,直接提取所有pageId的值,再使用数组下标提取。
表达式:$..pageId,验证结果提取
JMeter进阶系列--JSON提取器
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



