Jmeter之设置用户token为全局变量(超详细,保证你会)

1.打开jmeter之后新增一个线程组

路径:Test  Plan ——Add——Theads(user)——Thread Group

2.添加了线程组之后,在线程组下面添加一个sampler 取样器,就是HTTP request

3.在http请求里面输入接口的相关参数

        包含:请求协议,IP地址,端口号,请求方式(常用GET,POST),接口的路径,编码格式,接口请求需要携带的参数

4.给登录的接口添加“view result tree”查看结果树

路径:HTTP Request——Add——Lislencer——View Results Tree

5.添加完成后点击运行,

6.运行之后发现返回的数据提示不支持该格式 

提示:Content type 'text\/plain;charset=UTF-8' not supported

解决方法:

6.1然后我们需要在头部加一个HTTP Header Mannager 的头部管理器(这里直接放到Test Plan 下面后面所有的线程组都会运行这个请求格式)

 

6.2 在HTTP Header Mannager  里面添加一个值为CotentType  格式设置为 applicant/json

6..3 然后再次运行,这个时候我们发现就可以了

7.通过上面运行用户登录的结果我们已经获取到了用户的token,接下来我们在添加后置处理器

jp@gc-JSON/YAML Path Extractor

路径:HTTP Request——Add——Post Processors——jp@gc-JSON/YAML Path Extractor

8. 添加完成后就是去配置jp@gc-JSON/YAML Path Extractor里面的相关参数

Detination Variable name:自定义变量名称

JSONPath Expression: 提取参数的表达式(我们这里就是提取用户token的表达式)

Default Value :如果没有提取到我们想要的参数时 给的一个默认提示

        从结果树里面取提取用户token表达式的来源    表达式:$.result.token

9.接下来添加一个Debug PostProcessor 去查看我们通过jp@gc-JSON/YAML Path Extractor去提取的用户token 是否成功。(这一步也可以不执行,主要是为了验证)

路径:HTTP Request——Add——Post Processors——Debug PostProcessor

9.1同样点击运行后在结果树里面查看,在下图我们看到 我们已经获取到了用户的token值

10.接下来就要用到我们的 函数助手了,打开函数助手,找到_setProperty函数

10.1.  路径:Tools—— Function  Helping Dialog  (快捷键:Ctrl+shift+F1)

10.2 找到_setProperty函数之后,

     01   将我们提取token的表达式放在value 值中,

     02  然后点击“生成”,就生成了一个全局变量函数

     03   复制生成的函数,然后粘贴到接下来我们要讲的BeanShell PostProcessor 参数中

备注:如果生成的函数被置灰,无法选中复制,不用担心;其实在生成的时候已经给你复制了,你只需要在别的需要应用地方Ctrl+V 复制就行了

11.用户的token提取成功之后,我们需要再添加一个后置处理器:BeanShell PostProcessor

路径:HTTP Request——Add——Post Processors——BeanShell PostProcessor

11.1 设置 BeanShell PostProcessor中的相关参数,需要把我们在_setProperty函数中生成的函数填入即可。

11.2  ${__setProperty(ntoken,${token},)} 这里的“ntoken” 是我们在其他地方引用的名称,我们可以自定义进行修改; 这里我改成了${__setProperty(user_ntoken,${token},)}

11.3  接下来就是最后一步,在HTTP Header Mannager 的头部管理器里面加入我们的token函数变量

 要点:在引用时我们只需要我们设置的名称即可

${__setProperty(user_token,${token},)} : 函数生成后的token变量

${__setProperty(user_token)}:   我们实际引用的token变量

12. 到这里我们的全局变量就已经设置完成了,后续的所有请求都会带着我们刚刚配置好的全局变量token

 以下是举例说明:

1.用户预约的接口需要用户登录的token

2.新增http的请求并填写接口所需的相关参数,并且是没有填写用户token的相关信息;

3.最后通过结果树查看到 我们在请求头查看到请求时 携带着用户的token值

所以,全局变量设置成功啦!

———————————————————————————————————————————

方式二,只需使用Json Extractor 后置处理器即可实现

1.添加后置处理器 Json Extractor 并配置 变量名称和 提取路径

2.将配置好的变量存放到 信息管理头中即可正常使用全局变量的token

 

至于这两种方式的区别的话...............

 

### 如何在 JMeter 中将 Token 设置全局变量 #### 使用 HTTP 请求和 JSON 提取器提取 Token 并将其设置全局变量 为了实现这一目标,可以通过以下方式完成: 1. **创建线程组** 首先,在测试计划中添加一个新的线程组来模拟用户的登录操作。 2. **配置 HTTP 请求** 在线程组下新增一个 HTTP 请求采样器,用于发送登录请求。确保填写正确的 URL 和 POST 参数[^3]。如果 API 要求特定的内容类型或授权头,则需通过 `Content-Type` 或 `Authorization` 字段指定这些值。 3. **添加 MD5 加密逻辑(如有必要)** 如果密码字段需要加密,可以在 BeanShell PreProcessor 中编写脚本进行处理。例如: ```java import org.apache.commons.codec.digest.DigestUtils; String password = vars.get("password"); String md5Password = DigestUtils.md5Hex(password); vars.put("encrypted_password", md5Password); ``` 4. **使用 JSON 提取器捕获 Token 值** 登录成功后,服务器通常会返回包含 Token 的 JSON 数据结构。此时可利用 JSON 提取器解析响应数据中的 Token 值,并存储到局部变量中。假设返回的数据如下所示: ```json { "data": { "usertoken": "your_token_value" } } ``` 则可在 JSON 提取器中定义路径表达式为 `$..usertoken` 来定位该字段[^4]。 5. **转换局部变量至全局作用域** 局部变量仅限于当前线程可见,因此还需借助 BeanShell PostProcessor 将其提升为全局可用的状态。具体做法是在同一 HTTP 请求之后附加一段代码片段: ```java String localToken = vars.get("local_token"); // 获取由JSON Extractor保存的临时变量名 props.setProperty("global.token", localToken); // 存入属性集合props以便其他线程访问 log.info("Global token set as: " + props.getProperty("global.token")); // 可选日志记录确认赋值情况 ``` 6. **后续调用中引用全局变量** 当前所有线程都可以通过 `${__P(global.token,)}` 动态读取已设定好的全局 Token 值[^1]。注意这里采用的是 Property 函数而非 Variable 类型,因为后者不具备跨线程共享能力。 以上即完成了整个流程的设计与实施过程描述。 ---
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值