我已经使用BlazeMeter插件记录了脚本,并且希望使用在成功登录请求(另一个请求)中收到的使用访问令牌。我的测试计划如下所示
Thread Group : [A]
|- HTTP Sampler - Login Page
|-Regular Expression Extractor [getToken]
|-HTTP Sampler - Other Page
|-Beanshell PreProcessor[Set Header in Authorization]
正则表达式提取器的参数和值如下:
Variable Name : token
Regular Expression : {“access_token”:”(.+?)"
Template : $1$
Match No. : 0
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"));
答案 0 :(得分:0)
您可以添加调试采样器,然后首先尝试确认您的正则表达式提取器是否按预期工作吗?它应该为您提供所需的token
值。
如果您的token
具有必需的值,我建议您通过右键单击HTTP采样器来添加HTTP Header Manager
配置元素
HTTP Request => Add => Config Element => HTTP Header Manager
请注意:-您没有在关键字Bear和令牌之间提供任何空格/连字符(-)。
有关详细信息,请参阅此链接: https://stackoverflow.com/a/24550552/1115090
答案 1 :(得分:0)
token
变量是否确实具有预期值。如果您的Beanshell脚本失败,也请检查jmeter.log file中是否有可疑条目-原因将在那里打印。 Login Page
的响应数据似乎是JSON,因此使用JSON Extractor代替正则表达式提取器是有意义的。它允许使用JSON Path language以便从响应中提取“有趣的”数据位。在您的情况下,相关的JSON路径表达式应为$.access_token
Since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language for scripting,所以请考虑迁移到JSR223 PreProcessor和Groovy语言(可以重复使用相同的代码)