如何在Gatling脚本的每个请求中动态传递当前Epoch时间戳
如何在Gatling脚本中批量为每个请求生成独立的当前Epoch时间戳?
刚好我之前处理过类似的Gatling脚本优化需求,给你两个高效的解决方案,既能让每个请求用各自的实时时间戳,又能批量搞定不用手动逐个改:
1. 用Gatling内置函数动态生成时间戳
Gatling本身提供了__millis()内置函数,它会在请求执行的瞬间生成当前的毫秒级Epoch时间戳。因为每个exec块都是在实际发送请求时才会求值,所以每个请求的时间戳肯定是不同的。
你只需要把原来URL里的固定时间戳替换成这个函数即可,修改后的脚本示例:
val Transaction_Name_1 = group("Transaction_Name_1") { exec(http("request_1") .get("/abc/details1?_=${__millis()}")) .pause(5) .exec(http("request_2") .get("/abc/details1?_=${__millis()}")) }
2. 批量替换所有时间戳的技巧
如果你的脚本里有大量这类请求,手动改肯定麻烦,直接用代码编辑器的正则表达式查找替换功能就能一键搞定:
- 打开你的脚本文件,调出查找替换面板
- 选择「正则表达式」模式
- 查找内容填:
_=\d+ - 替换内容填:
_=${__millis()} - 点击「全部替换」,所有固定的时间戳就都变成动态生成的了
备选:Scala原生写法
如果你更倾向于用Scala原生代码,也可以直接嵌入System.currentTimeMillis(),效果完全一样:
val Transaction_Name_1 = group("Transaction_Name_1") { exec(http("request_1") .get(s"/abc/details1?_=${System.currentTimeMillis()}")) .pause(5) .exec(http("request_2") .get(s"/abc/details1?_=${System.currentTimeMillis()}")) }
这两种方式都能确保每个请求拿到的是自己执行时刻的时间戳,完全符合你的要求,而且批量替换的操作几分钟就能搞定所有请求~
内容的提问来源于stack exchange,提问作者Karan
相关产品推荐
相关产品推荐

