jmeter json提取器及设置全局变量

记录:在jmeter接口测试的过程中,遇到了需要关联参数的情况,在接口响应后,提取请求返回结果中的某个值或者某一组值,作为下一个接口的入参,如token或者其他变量,以及需要设置全局变量cookie的情况,整理如下

1.一开始的时候,使用的是【正则表达式提取器】去提取数据,但这个元件,对于响应结果是HTML格式的接口还比较方便,对于JSON格式的响应结果就有点无能为力了,总是提取不到需要的正确的值,百度教程的时候,发现了jmeter有专门处理JSON格式响应数据的元件【JSON Extractor】。

一、在接口请求内添加JSON Extractor,路径如下

jmeter json提取器及设置全局变量

二、JSON Extractor需要填写变量路径(JSON PATH),先认识如何写JSON PATH,才能获取到需要的变量值,jmeter默认的查看结果树是text文本格式,需要快速看出变量的层级,修改显示格式改成JSON Path Tester,可以在这里直接对结果进行调试

jmeter json提取器及设置全局变量

写JSON PATH:

JSON的基本语法就是$.然后后面跟要取字段名,比如要取msg,就直接写$.msg,如果要取data,就直接写$.data如下所示:

jmeter json提取器及设置全局变量

我需要获取的是msg《data内的第三条数据《对应的productId字段

jmeter json提取器及设置全局变量

语法规则如下表:

jmeter json提取器及设置全局变量

三:完善JSON提取器的表单

jmeter json提取器及设置全局变量

(如果不放心,还可以在请求后添加一个Debug Sampler查看我们需要id是否提取成功。)

四:如果是跨线程使用,需要声明全局变量,教程如下

1.该线程组添加BeanShell取样器,sampler-BeanShell sampler

jmeter json提取器及设置全局变量

2.运行函数助手,利用函数__setProperty将获取到的参数设为属性

jmeter json提取器及设置全局变量

3.再将设置属性时生成的函数字符串粘贴到脚本区域
jmeter json提取器及设置全局变量

4.使用__P函数来调用jmeter属性,获取属性值

jmeter json提取器及设置全局变量

其中${__P(productId,)}就是所取到的变量,可以在另一个线程中使用该变量。

不断进步