You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter:如何在单线程组中按时间/次数间隔执行RefreshToken采样器

解决方案:在同一线程组内定时执行Token刷新

当然可以,不用额外线程组就能实现这个需求,下面是几种实用的实现方式:

方式一:用定时器控制执行间隔

  • 给RefreshToken采样器添加Constant Timer,设置线程延迟为60000毫秒(即60秒)。这种方式下,采样器会在测试启动时执行第一次,之后每隔60秒重复执行。
  • 若需要首次执行也延迟60秒,改用JSR223 Timer,编写Groovy代码控制:
    def lastRun = vars.get("lastRefreshRun")
    if (!lastRun) {
        vars.put("lastRefreshRun", String.valueOf(System.currentTimeMillis()))
        return 60000
    }
    return 60000
    

方式二:通过条件判断跳过不必要的执行

在RefreshToken采样器前添加JSR223 PreProcessor,用代码判断是否满足刷新条件:

long now = System.currentTimeMillis()
long lastRefresh = vars.get("lastRefreshTime") != null ? Long.parseLong(vars.get("lastRefreshTime")) : 0

if (now - lastRefresh < 60000) {
    sampler.setSkipNext(true) // 跳过当前采样器执行
} else {
    vars.put("lastRefreshTime", String.valueOf(now))
}

这段代码会让采样器仅在上次刷新超过60秒时才执行,否则直接跳过,不影响其他测试用例的连续运行。

方式三:结合Runtime Controller与调度器

给RefreshToken采样器套一个Runtime Controller,在控制器内启用调度器,设置每隔60秒执行一次。注意要确保该控制器的逻辑不会打断其他测试用例的连续执行流程。

关键注意点

  • 刷新Token后,务必将新的Token值存入JMeter变量(比如${access_token}),其他测试用例直接引用该变量即可。
  • 如果单条测试用例执行时长接近或超过60秒,建议将刷新间隔调整为55秒左右,避免Token在测试用例执行过程中过期。

内容的提问来源于stack exchange,提问作者Oleg Tarasenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:44:55