JMeter如何仅单次提取token并在多API接口请求中复用
JMeter 单次获取token供全量请求使用实现方法
方案一:使用 setUp 线程组(推荐实现)
这是JMeter官方推荐的前置预处理场景解决方案,逻辑清晰无额外判断开销:
- 新增setUp线程组,该线程组优先级高于所有普通业务线程组,配置其线程数为1、循环次数为1,保证仅执行1次
- 将提取token的HTTP请求移动到该setUp线程组下,按原有逻辑添加提取器将token存入
author变量 - 新增JSR223后置处理器,写入代码将局部变量转为全局属性,所有线程均可读取:
${__setProperty(global_author, ${author},)} - 原有普通业务线程组保留20线程、单循环的配置,删除组内原有提取token的请求,仅保留两个业务API请求
- 业务请求中引用全局token的写法调整为
${__P(global_author,)}即可
方案二:单线程组内通过If控制器控制执行
如果不想拆分线程结构,可以用计数器判断仅执行一次token请求:
- 保留原有单个线程组结构,在提取token的请求外层添加If控制器
- If控制器的条件填写如下表达式,保证仅第一个线程执行时会触发token请求:
${__jexl3(${__counter(TRUE,)} == 1,)} - 同方案一,提取到token后通过
__setProperty函数转成全局属性,后续业务请求读取全局属性使用即可 - 注意勾选If控制器的「Interpret Condition as Variable Expression?」选项,避免额外性能损耗
补充说明:如果token存在有效期限制,可以在提取token时同步存储一个获取时间的全局属性,后续请求前增加判断逻辑,超过有效期自动重新触发一次token获取即可适配长时间压测场景
内容的提问来源于stack exchange,提问作者Alejandro Martin
相关产品推荐
相关产品推荐

