JMeter RegEx Extractor配置正确但请求头显示${token}而非实际提取值
前置配置
请求#1
请求地址:POST https://url/
正则提取器
原配置截图已省略
响应#1
返回内容:
{ "Token":"WkQTxNnZRR0nofyJzb-kioALlXgwc7cN9rokXrKzWmtB2BDedUXeQnd94S5KWvaz0", "ExpirationUTC":"2121-09-17T14:39:57.504Z", "TokenId":"string" }
请求#2
请求地址:GET https://some-other-url
请求头管理器
原配置截图已省略
运行结果
预期请求头为:Authorization: Bearer WkQTxNnZRR0nofyJzb-kioALlXgwc7cN9rokXrKzWmtB2BDedUXeQnd94S5KWvaz0
实际请求头显示为:Authorization: Bearer ${token}
原运行结果截图已省略
调试组件结果:疑似变量作用域问题
原调试结果截图1、2已省略
正则测试工具测试结果
使用与正则提取器完全相同的正则表达式测试,可正常匹配到目标Token字符串。
原正则测试结果截图已省略
尝试使用JSON提取器提取的结果
原JSON提取器配置截图已省略
替换后请求头仍显示为Bearer ${token}
解决方案
按以下顺序排查即可解决:
- 检查提取器位置:正则提取器/JSON提取器必须放在请求#1的子节点下,若放在和请求#1平级、或请求#2的子节点下,无法获取请求#1的返回值。
- 检查变量名大小写:JMeter变量名大小写敏感,若提取时定义的变量名为
Token(首字母大写),引用时写${token}(小写首字母)会识别失败,需保持两者完全一致。 - 检查提取器配置:使用JSON提取器时,JSON路径表达式填写
$.Token,匹配数字填1,可在默认值栏填写TOKEN_NOT_FOUND方便排查是否提取失败。 - 检查执行顺序与线程组归属:确保请求#1执行顺序在请求#2之前,两个请求需放在同一个线程组内,跨线程组默认变量不共享,需要通过属性传递实现取值。
- 检查提取器作用域:提取器作用域设置为仅作用于父节点(请求#1),避免被其他请求的返回值覆盖变量。
内容的提问来源于stack exchange,提问作者Guy
相关产品推荐
相关产品推荐

