无法将JMeter中一个采样器与另一个采样器的value [token]相关联

时间:2019-02-05 10:27:19

标签: jmeter

我已经使用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 PreProcessor脚本,如下所示

    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"));
    

2 个答案:

答案 0 :(得分:0)

您可以添加调试采样器,然后首先尝试确认您的正则表达式提取器是否按预期工作吗?它应该为您提供所需的token值。

如果您的token具有必需的值,我建议您通过右键单击HTTP采样器来添加HTTP Header Manager配置元素

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

在此配置元素中,可以直观地添加标题,如下所示: Sample image for HTTP Header Manager

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

有关详细信息,请参阅此链接: https://stackoverflow.com/a/24550552/1115090

答案 1 :(得分:0)

  1. 您的正则表达式提取器很可能会失败,因为引号看起来非常可疑。您可以使用Debug Sampler and View Results Tree listener组合仔细检查token变量是否确实具有预期值。如果您的Beanshell脚本失败,也请检查jmeter.log file中是否有可疑条目-原因将在那里打印。
  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标头(以及任何其他标头)