前言

本文主要介绍Jmeter中,如何设置全局变量,以及如何引用全局变量。
上干货。

1 提取信息

有两种方法,可根据返回值复杂度进行选择,如果返回json文件很简洁,用JSON提取器比较方便,如果返回的json嵌套比较多,则推荐正则匹配。

1.1 正则提取

选中接口,右键 - 添加 - 后置处理器 - 正则表达式提取器
在这里插入图片描述
参数设置
在这里插入图片描述
参数说明:

1)引用名称:变量名;
2)正则表达式:括号内为匹配的内容,比如匹配下方示例1这段json文件中jwt_token字段的值,正则表达式为"jwt_token":"(.*?)",如需获取多个值,可以在后面添加其他匹配规则,用逗号隔开;

示例1:
在这里插入图片描述

说明:
.:表示除“\r\n”之外的任意字符
*:表示匹配前面的子表达式任意次
+:表示匹配前面的子表达式1次或多次
?:表示匹配前面的子表达式0次或1次
.*:贪婪匹配原则,即匹配到不能匹配为止
.*?:非贪婪匹配,即在匹配成功的情况下尽可能少的匹配

3)模板 1 1 1,一般获取一个值只需设置一个模板,如上面匹配多个正则表达式,这边可以设置多个模板,以逗号隔开,比如: 1 1 1 2 2 2 3 3 3
4)匹配数字:1代表第一个,-1代表全部,0代表随机;
5)缺省值:如果正则未匹配到,就会使用缺省值;

1.2 Json提取器

右键 - 添加 - 后置处理器 - JSON提取器
在这里插入图片描述
参数设置:
在这里插入图片描述
参数说明:
1)变量名:n_zqbh , 可以根据需要修改;
2)Json Path Expressions:Json Path 表达式,拿示例2举例,想要得到result字段的值,表达式应写成:$.result

很简单对吧,不过也有复杂的情况,嵌套了列表,列表中又嵌套了字典,这种情况推荐用正则表达式。

示例2:
{
“code”:“0”,
“result”:“MzIwNTA35acf038e1abb46ff9b4b0a1bafd8721e”,
“status”:200,
“timeElapsed”:901,
“timestamp”:1693306805980
}

2 设置全局变量

表达式: ${__setProperty(全局变量名,${局部变量名},)};
添加Bean Shell取样器,线程组 - 添加 - 取样器 - Bean Shell取样器。
在这里插入图片描述
参数设置:
在这里插入图片描述
参数说明:
1)全局变量名称;
2)局部变量,value是之前提取出的内容,在这边引用,赋值给全局变量;

3 全局变量引用

表达式:${__property(全局变量名)}
上面已经在线程1中提取出了jwt_token值,并设置为了全局变量,现在我们可以在线程2的接口中,填入${__property(newtoken)}直接引用。
在这里插入图片描述

运行结果:可以看到,线程2的request headers中,jwt-token的值已经成功拿到。
在这里插入图片描述

4 FAQ

Q1:设置全局变量的表达式,可以快捷生成吗?

A1:答案是可以。参考方法:

step1、打开选项 - 函数助手对话框
在这里插入图片描述

step2:利用函数助手生成函数表达式

按下图顺序操作,应该能看懂吧,这样操作就可以完成Bean Shell取样器参数获取
其中newtoken是我们要设置的全局变量名称,
下方的value值,是引用的局部变量值

在这里插入图片描述

step3: 将函数表达式,复制到Bean Shell取样器

喏,这样就可以了,记得保存。在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐