Jmeter之JSON提取器应用

场景分析:有时候我们的业务需要发送多次请求,每次请求都是上下相互依赖,也就是说串行执行,每个请求需要上一个请求的部分数据返回作为本次请求的参数,该如何在Jmeter中实现呢?

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

下面用一个例子来简单试用一下,例子比较粗糙简陋,但是关键的地方都很确定,因此绝大部分场景使用没有问题。

看下返回数据

Jmeter之JSON提取器应用

 添加一个JSON 提取器

Jmeter之JSON提取器应用 

Jmeter之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):如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中

Default Values: 缺省值,匹配不到值的时候取该值,可写error。

那么接下来就是如何写表达式了:

JSON path表达式怎么写?例如我要获取id,可写$.data.id,$表示根元素,然后一级级属性往下去找,先找到data,再往下子节点找到id;也可写$..id,直接从根元素去递归查找到id;获取其他参数同理。详细的可查看这篇文章JsonPath 运算符使用

Jmeter之JSON提取器应用

Json提取器设置

注意:每个之间都是分号隔开 

Jmeter之JSON提取器应用 

配置Debug PostProcessor

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

Jmeter之JSON提取器应用

Jmeter之JSON提取器应用

参数使用

已经成功的获取到了数据,接下来就是在下一个请求中使用 

添加第二个Http请求,并在参数里面使用变量占位符,当然也可以用在请求头配置中

Jmeter之JSON提取器应用

Jmeter之JSON提取器应用 

Jmeter之JSON提取器应用 

成功获取到数据,并请求了接口,大功告成。

例子粗糙,但是内容确实是完整的,希望对你们有用。