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

如何从Gatling的Feeder中提取数据?新手技术求助

从Gatling CSV Feeder提取数据的实用方法

嘿,刚上手Gatling的话,Feeder这块一开始确实容易摸不着头脑,我来给你一步步讲清楚怎么用你创建的这个Feeder提取数据~

首先,你已经定义了一个随机读取CSV的Feeder:

val feeder = csv("insertPC.csv").random

接下来核心就是把Feeder的数据注入到Gatling的Session中,然后在请求或者逻辑里引用这些数据。

1. 基础用法:在场景中注入并直接引用

最常用的方式是在你的Scenario里通过feed(feeder)方法把Feeder的一行数据加载到Session,之后就可以用${列名}的方式直接引用CSV里的字段。

举个完整的例子,假设你的insertPC.csv内容是这样的:

pc_id,pc_model,pc_price
1001,ThinkPad X1,9999
1002,MacBook Pro,12999
1003,Dell XPS,8999

那你的场景可以这么写:

val scn = scenario("InsertPCScenario")
  .feed(feeder) // 从Feeder加载一行随机数据到Session
  .exec(http("Insert PC Request")
    .post("/api/pcs")
    .body(StringBody("""{"id": "${pc_id}", "model": "${pc_model}", "price": ${pc_price}}""")).asJson)

这里${pc_id}、${pc_model}就是直接引用Feeder加载到Session里的对应列数据,Gatling会自动替换成CSV里的实际值。

2. 手动提取并处理Session中的Feeder数据

如果你需要对Feeder的数据做一些自定义处理(比如类型转换、拼接字符串),可以用exec结合Session API来手动提取:

val scn = scenario("ProcessPCScenario")
  .feed(feeder)
  .exec(session => {
    // 从Session中提取Feeder的数据
    val pcId = session("pc_id").as[String]
    val pcPrice = session("pc_price").as[Int]
    // 自定义处理:比如给价格打9折
    val discountedPrice = pcPrice * 0.9
    // 把处理后的数据放回Session,方便后续使用
    session.set("discounted_price", discountedPrice)
  })
  .exec(http("Insert Discounted PC")
    .post("/api/pcs")
    .body(StringBody("""{"id": "${pc_id}", "model": "${pc_model}", "price": ${discounted_price}}""")).asJson)

几个要注意的小细节

  • 确保你的insertPC.csv放在src/test/resources目录下,这是Gatling默认读取资源文件的路径,不然会找不到文件。
  • random模式会每次随机选取CSV里的一行数据,如果需要按顺序读取可以用.queue(),循环读取用.circular(),根据你的测试需求调整。
  • 如果CSV里有特殊字符或者空值,记得提前处理,避免请求报错。

这样应该就能顺利从Feeder里提取并使用数据啦,有其他细节问题随时问~

内容的提问来源于stack exchange,提问作者Luigi Izzo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:45:33