如何在Gatling脚本中随机加载0-100编号的请求文件?
实现Gatling随机加载指定范围的请求文件
没问题,我来帮你搞定这个随机加载文件的需求!只需要对原脚本做一点修改,就能让每个虚拟用户随机选取0到100编号的请求文件,具体实现如下:
修改后的完整脚本
import java.text.DecimalFormat // 定义格式化器,确保编号是4位带前导零的格式,和示例文件命名规则一致 val fileFormat = new DecimalFormat("0000") val scn = scenario("newUser") .exec(http("request_0") .get("/wordpress/?page_id=83") .headers(headers_0)) .pause(1) .exec(http("request_1") .post("/wordpress/?page_id=83") .headers(headers_1) // 动态生成随机文件名:生成0-100的随机数→格式化为4位字符串→拼接文件名 .body(RawFileBody(session => s"new_user_request_${fileFormat.format(session.randomInt(101))}.txt"))) setUp(scn.inject(atOnceUsers(100))).protocols(httpProtocol)
关键细节解释
- 编号格式化:用
DecimalFormat("0000")把随机生成的数字转换成4位带前导零的字符串,比如数字5会变成0005,完美匹配示例文件new_user_request_0001.txt的命名格式。 - 随机数生成:
session.randomInt(101)会生成0到100(包含两端)的随机整数——因为Gatling的randomInt(n)是左闭右开区间[0, n-1),所以传入101才能覆盖到100这个编号。 - 动态文件名:通过
RawFileBody的函数式写法,每个虚拟用户在执行请求时都会独立生成随机文件名,实现真正的随机加载。
注意事项
- 请确保所有
new_user_request_0000.txt到new_user_request_0100.txt文件都存放在Gatling的user-files/resources目录下(或你自定义的资源路径),否则会出现文件找不到的错误。 - 如果你的编号范围是
1到100而非0到100,只需要把session.randomInt(101)改成session.randomInt(100) + 1即可。
内容的提问来源于stack exchange,提问作者Luigi Izzo
相关产品推荐
相关产品推荐

