【发布时间】:2021-09-01 10:10:00
【问题描述】:
我的测试计划如下:
- get token:获取访问令牌的请求
- 设置用户定义变量以获取 tokenGeneratedTime,假设 tokenGeneratedTime 为
${__time(,)}
- 设置用户定义变量以获取 tokenGeneratedTime,假设 tokenGeneratedTime 为
- 检查令牌是否过期(如果控制器) -
{__jexl3((${__time(,)} - ${tokenGenerationTime}) > 3599000)}- 如果为真,则去获取令牌采样器
- 如果为 false,则转到后续请求
- 一些 https 请求
因此,如果我第一次运行此测试计划(仅 1 次迭代),获取令牌的请求将被触发,条件将被评估为 false 并触发后续请求。一切都很好。但是正如您所看到的,如果我第二次立即再次运行测试计划(而不是迭代),则会再次触发获取令牌(授权)请求,这是不需要的。我需要在到期时调用获取令牌请求。
如果令牌未过期,我正在考虑将变量设置为 false,并将获取令牌请求置于 if 控制器下。但是如何在 if 控制器中设置变量呢?
如果您有任何其他方法可以实现这一点,请提出建议。
TIA
【问题讨论】:
-
理想情况下,您应该在令牌过期时请求令牌。令牌过期时会收到什么消息?
-
令牌请求没有说明任何关于到期的信息。它只是返回令牌。当我在后续的 Http 请求中使用令牌时,如果返回 401,则表示令牌已过期。
-
刚刚更新了答案以检查响应代码
401而不是响应消息。
标签: jmeter performance-testing