我在 Mac 上使用 Apache JMeter 3.2 r1790748。我有一个setUp Thread Group身份验证电话。调用工作并正确输出令牌。现在我需要将该令牌传递给HTTP Header Manager我正在进行的所有调用。
首先,这是我的令牌 json 输出:
{
"access_token": "aaaaaa555555555",
"token_type": "Access",
"user_id": "5555"
}
Run Code Online (Sandbox Code Playgroud)
这是我的HTTP Header manager样子:
1 值: Authorization:Bearer ${access_token}
我的网络电话:
GET https://my_server.com/some_path
GET data:
[no cookies]
Request Headers:
Connection: close
Authorization: Bearer ${access_token}
Host: my_server.com
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_91)
Run Code Online (Sandbox Code Playgroud)
如您所见,该变量access_token并未被 setup 调用中的值替换。
我试过的:
BeanShell 后处理器:
我创建了这个脚本,它实际上解析并access_token正确输出:
import org.apache.jmeter.protocol.http.control.Header;
import net.minidev.json.JSONObject;
import net.minidev.json.parser.JSONParser;
String jsonString = prev.getResponseDataAsString();
log.info("jsonString = " + jsonString);
JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
JSONObject json = (JSONObject) parser.parse(jsonString);
String access_token = json.getAsString("access_token");
log.info("access_token = " + access_token);
vars.put("access_token", access_token);
Run Code Online (Sandbox Code Playgroud)
JSON 提取器:
Apply to: Main sample and sub-samples
Variable names: access_token
JSON Path expressions: access_token
Match No. (0 for Random): 1
Compute concatenation var (suffix _ALL): unchecked
Default Values: none
Run Code Online (Sandbox Code Playgroud)
关于为什么标题管理器不应用access_token结果值的任何想法?
谢谢!
由于您在 setUp Thread Group 中设置了一个变量,因此您不能在另一个线程组中使用它,因为线程组不共享变量,只有属性。
所以为了通过认证,你需要将它保存为一个属性:
${__setProperty(access_token, ${access_token})};
Run Code Online (Sandbox Code Playgroud)
在此示例中,我使用名为变量的值access_token(已设置,但仅在 setUp 线程组中可用)来设置具有相同名称的属性,该属性可跨线程组使用。或者更改 BeanShell 后处理器,添加:
props.put("access_token", access_token);
Run Code Online (Sandbox Code Playgroud)
然后在另一个线程组中,使用__P或__property函数检索它:
${__P(access_token)}
Run Code Online (Sandbox Code Playgroud)
还要记住,HTTP Header Manager 在任何线程启动之前初始化,因此您也不能因为这个原因在那里使用变量。例如检查这个问题。
如果您仍然看到空值,我建议在两个线程组中添加调试采样器(同时启用 JMeter 属性和 JMeter 变量),并检查损坏的位置(在保存或检索时)。
| 归档时间: |
|
| 查看次数: |
5888 次 |
| 最近记录: |