无法关联值[令牌],从一个采样到另一个JMeter的

问题描述 投票:0回答:2

我一直在使用BlazeMeter插件录制的脚本,我想这是我收到成功登录请求,在另一个请求使用访问令牌。我的测试计划看起来像如下

Thread Group : [A]
      |- HTTP Sampler - Login Page
           |-Regular Expression Extractor [getToken]
      |-HTTP Sampler - Other Page
           |-Beanshell PreProcessor[Set Header in Authorization]
  1. 正则表达式提取参数和值象下面这样: Variable Name : token Regular Expression : {“access_token”:”(.+?)" Template : $1$ Match No. : 0
  2. BeanShell的预处理程序脚本像下面 import org.apache.jmeter.protocol.http.control.Header; log.info("Start"); sampler.getHeaderManager().add(new Header("Authorization","Bearer"+vars.get("token"))); log.info(vars.get("token"));
jmeter
2个回答
0
投票
  1. 最有可能为你的引号看起来毫无可疑的正则表达式提取失败。您可以仔细检查,如果该token变量真的有使用Debug Sampler and View Results Tree listener组合的预期值。还检查了jmeter.log file任何可疑项,如果你的BeanShell脚本失败 - 原因将在那里打印。
  2. Login Page的响应数据似乎JSON因此是很有意义的使用JSON Extractor而不是正则表达式提取的。它允许使用JSON Path language为了提取的响应数据的“有趣”位。在你的情况下,相关的JSON路径表达式会$.access_token
  3. Since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for scripting所以考虑迁移到JSR223 PreProcessor和Groovy语言(可以重复使用相同的代码)
  4. 使用Authorization你甚至都不需要脚本,你可以添加HTTP Header Manager头(以及任何其他头)

0
投票

您可以添加调试取样,并尝试首先要确认你的正则表达式提取器工作正常?它应该提供您token的要求值。

如果您token具有所需的价值,我会建议你用鼠标右键单击HTTP取样器添加HTTP Header Manager config元素

HTTP Request => Add => Config Element => HTTP Header Manager

在这个配置元素,你可以直观地添加页眉如下:Sample image for HTTP Header Manager

请注意: - 您没有提供任何空间/连字符( - )或关键字熊和令牌之间。

请参考以下链接了解详细信息: - https://stackoverflow.com/a/24550552/1115090

© www.soinside.com 2019 - 2024. All rights reserved.