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

Gatling参数值输出格式异常 显示some(value)而非预期纯值

问题原因

Scala集合的Map.get()方法返回值是Option[T]类型,当对应key存在值时返回Some(实际值)实例,不存在时返回None实例。你代码里直接对这个返回结果调用toString,本质是把Option容器对象本身转成字符串——Some(123456).toString的输出就是some(123456),自然写进文件的内容带了多余的包裹格式,没有拿到容器内部存的真实参数值。
另外你直接操作session.attributes底层Map的写法不符合Gatling官方API规范,后续容易触发类型转换、空指针类问题。

修复方案
  1. 替换取值逻辑,不要直接对Option结果调用toString,优先用Gatling封装的Session API取值:
    把原来写文件的核心逻辑替换成下面的代码即可:
.exec { session =>
  val writer1 = new PrintWriter(new FileOutputStream(outputFilePath, true))
  // 直接通过Gatling Session API取user_id的值转成字符串,as[String]会自动拿到真实值
  val userId = session("user_id").as[String]
  writer1.write(userId + "\n")
  writer1.close()
  session
}
  1. 如果你担心jdbc查询结果可能缺失user_id字段,避免取值报错,可以用安全的Optional取值方式,给默认值兜底:
// 找不到user_id时返回空字符串,不会抛异常
val userId = session("user_id").asOption[String].getOrElse("")

补充提示:你当前每次执行都新建、关闭文件输出流的写法,在并发压测场景下会出现文件锁冲突、内容写入错乱的问题,如果后续要提高并发,建议统一用专门的文件写入组件批量处理,不要在每个虚拟用户的exec块里单独操作文件流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:09:41