我找到了主题Refreshing Auth Token while keep the requests running in JMeter 3.3。我面临着相同的任务-令牌每x次刷新一次,其他请求同时发送。我已经看到作者找到了解决方案。但是,如果您能分享逻辑,我将不胜感激。我在Jmeter中尝试了全局属性,但似乎为所有用户设置了一个令牌。已经添加了计时器,但是我得到一个用于会话的令牌。也许我们有一个针对Jmeter 5.x的新解决方案。谢谢。
pkhisen 回答:Jmeter令牌刷新
解决方案将是相同的,您只需要对其稍作修改并使用__threadNum() function即可创建特定于线程(虚拟用户)的属性。
类似的东西:
${__setProperty(token_${__threadNum},variable containing the token,)}
将生成以下JMeter属性:
token_0=token for the first virtual user
token_1=token for the second virtual user
etc.
可以类似地使用__P() function来访问,例如:
${__P(token_${__threadNum},)}
更多信息:Here’s What to Do to Combine Multiple JMeter Variables
,非常感谢!我已经在一个线程组中使用以下逻辑实现了脚本:
- 设置var“触发器” = 60秒(令牌刷新间隔,每分钟);
- 登录用户;
- 获取令牌请求;并执行动作:
- 提取令牌并保存到vars;
- 将“ TokenTime”保存到变量(其中,“ CSV”中的“登录”是属性的名称);
- 计算“ TokenDiffTime” =“ TimeNow- TokenTime”->使用唯一名称另存为属性(唯一名称可以是字符串“ Login” +“ TimeDiff”-其中“ Login”是从CSV和“ TimeDiff”动态登录) –仅是静态字符串;属性名称的示例是“ User1TimeDiff”)。
- 具有逻辑的循环控制器:
- 如果是控制器(令牌是真的吗?->检查“ TokenDiffTime”> =“触发器”)->调用刷新令牌请求;提取实际令牌。
- 调用App请求;使用实际令牌。
- 如果是控制器(令牌是真的吗?->检查“ TokenDiffTime”> =“触发器”)->调用刷新令牌请求;提取实际令牌。
- 调用App请求;使用实际令牌。
因此,这种逻辑考虑了响应时间延迟,并且使用实际令牌调用了新的应用程序请求。 “触发器”是设置令牌刷新间隔的灵活值。希望这样的话题对某人有用。