如何在Taurus中实现每5分钟发送一次/auth请求的测试场景?
用Taurus实现每5分钟获取一次Token的测试场景
我需要用Taurus测试一个场景:先发送/auth请求获取Token,再用这个Token作为请求头参数调用/get-data接口获取数据。Token有效期5分钟,希望每5分钟执行一次/auth请求,而不是每次调用数据接口前都执行。之前尝试think-time选项,但会同时影响第二个请求,不符合需求。
当前的测试配置如下:
scenarios: getdata: requests: - url: https://myurl.com/auth method: POST label: auth body: username: my_usernmae password: my_password extract-jsonpath: auth_token: $.token - url: https://myurl.com/get-data method: GET headers: x-access-token: ${auth_token} label: getdata
实现方案
可以通过拆分场景+全局变量的方式实现,具体配置如下:
settings: env: auth_token: "" # 全局变量存储Token scenarios: # 定时获取Token的场景:每5分钟执行一次 auth_refresh: requests: - url: https://myurl.com/auth method: POST label: auth body: username: my_usernmae password: my_password extract-jsonpath: auth_token: $.token store: auth_token: ${auth_token} # 将提取的Token存入全局变量 executor: jmeter iterations: -1 # 无限循环 think-time: 300s # 每次循环间隔5分钟(300秒) startup-delay: 0 # 立即启动 # 持续调用数据接口的场景 get_data_loop: requests: - url: https://myurl.com/get-data method: GET headers: x-access-token: ${auth_token} # 使用全局变量中的Token label: getdata executor: jmeter iterations: -1 # 无限循环 think-time: 10s # 数据接口调用间隔,可自行调整 startup-delay: 0 # 立即启动
配置说明
- 全局变量:通过
settings.env定义auth_token,两个场景共享这个变量 - Token刷新场景:设置无限循环,每次执行后等待300秒(5分钟)再执行下一次,提取Token后更新全局变量
- 数据接口场景:无限循环调用数据接口,每次直接使用全局变量中的Token,不受Token刷新场景的间隔影响
这样就能实现每5分钟获取一次Token,同时持续调用数据接口的需求,避免了每次调用数据接口都重复获取Token的问题。
内容的提问来源于stack exchange,提问作者Nik Paramonov
相关产品推荐
相关产品推荐

