Jmeter关联之json 提取器应用

在接口测试中有一个这样的场景: 登录之后,需要进行昵称修改,怎么实现? 
首先我们分别看下登录、昵称修改的接口说明:

以上业务中补充一点,昵称修改,还需要添加请求头 Authorization 传登录获取的 token 值。

分析:登录之后的响应结果中会返回用户 id、token 信息; 而更新昵称需要传参 member_id、且需要请求头传 token;也就是我们要想办法从“登录”的响应结果中获取到 id、token 信息,再去传给“更新昵称”请求。因为返回数据格式是 JSON,所以我们用 JSON 提取器来实现。用正则表达式提取器也可以,大家可参见我之前写的文章。

一、JSON提取器设置多个变量获取多个数据

1、先添加好登录请求,运行下查看登录的响应结果
 

调整下查看结果方式,可较清晰看到响应结果中的 id、token 信息

JSON path 表达式怎么写?例如我要获取 id,可写.data.id,表示根元素,然后一级级属性往下去找,先找到 data,再往下子节点找到 id;也可写 $..id,直接从根元素去递归查找到 id;获取 token 同理。

2、右键登录请求-->后置处理器-->添加“JSON提取器”


JSON 提取器说明:
**Apply to:**应用范围 
Names of created variables : 接收值的变量名,自定义,多个变量用分号分隔 
JSON Path expression:  JSON path 表达式,也是用分号分隔 
Match No.(0 for Random): 0 表示随机;n 取第几个匹配值;-1 匹配所有。若只要获取到匹配的第一个值,则填写 1
Compute concatenation var(suffix_ALL): 如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为 _ALL 的 var 中 
Default Values: 缺省值,匹配不到值的时候取该值,可写 error。

为了检查通过 JSON 提取器是否正常获取到值,可添加 Debug PostProcessor 来检查,注意正常跑用例时删除或禁用它。

对比登录返回的结果,能看到已经正常获取到 id,token。

3、添加“修改昵称”请求,将 JSON 提取器获取到的值,进行变量引用。运行脚本,更改昵称成功。

二、JSON 提取器设置 1 个变量获取多个数据

我们也会碰到获取一个变量,但结果是多个数据的情况。

1、例如“获取用户列表”,先来看下“获取用户列表”的响应结果。

如果想要获取到这里所有的用户 id,JSON 路径表达式怎么写呢?..id或者.data[*].id

2、添加 JSON 提取器,获取所有用户 id 信息。

添加 Debug PostProcessor 来调试用,正常跑用例删除或禁用它。可查看到获取到了所有用户 id 值。通过 id_1,....id_22 可得到每一个 id。

3、将获取到每一个用户 id 循环进行“用户流水记录”查看结果。

1)添加循环控制器,设置循环次数。

2)在循环控制器之下添加“用户流水记录”请求,并做以下设置。


因为要把 JSON 提取器中匹配到的 id_1,....id_22 循环传递给“用户流水记录”,
__counter 为 jmeter 自带的一个计数函数,KaTeX parse error: Expected group after '_' at position 45: …1,从1开始; id_̲{__counter(,)}运行第 1 次 id_1,运行第 2 次 id_2,以此类推,直到运行到循环次数 id_22;
__V 为 jmeter 自带的一个嵌套变量函数,运行第 1 次 id___counter(,)为id1​,{__V(id_KaTeX parse error: Expected 'EOF', got '}' at position 19: …\_counter(,)},)}̲则为{id_1},值 80;以此类推,一直循环到 ${id_22}

以上为 jmeter 工具栏 tools--> 函数助手对话框界面,可以去选择帮助查看对应函数的功能说明。

3)运行后,可查看到结果

 

本文由柠檬班土豆老师原创,转载需注明出处!

想了解更多咨询的同学,可以加Q群领取学习资料:753665853 备注:CSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值