Gatling Feeder/参数异常:无请求发送导致仿真失败
问题定位与解决步骤
1. 检查Feeder初始化与数据有效性
- 确认CSV文件路径:仿真类中
edlToRenderfeeder的路径需与实际文件位置匹配,若文件在src/test/resources下,需写为csv("edlToRender.csv").circular(),路径错误会导致feeder无数据,进而无请求生成。 - 验证CSV内容:确保文件包含表头
edlAssetId,且至少有一行有效数据。空文件或表头不匹配时,feeder无法提供参数,后续请求不会执行。
2. 确认Feeder与Chain的绑定逻辑
- 检查场景绑定顺序:仿真类中场景定义需为
scenario("SendToRender").feed(edlToRender).exec(chnSendToRender),若漏写feed(edlToRender)或把exec放在feed之前,参数无法传入链中。 - 核对参数引用格式:链内调用searchAsset接口时,参数必须写成
#{edlAssetId},拼写错误或使用其他占位符格式(如$edlAssetId)会导致参数解析失败,请求可能被静默跳过。
3. 开启日志排查参数问题
- 调整Logback配置:在
src/test/resources/logback.xml中,将io.gatling的日志级别设为DEBUG,可查看feeder数据加载、参数替换的详细过程:<logger name="io.gatling" level="DEBUG" /> - 临时添加控制台日志:在链中插入代码打印session参数,直接验证参数是否成功获取:
exec(session => { println("EDL Asset ID: " + session("edlAssetId").asOption[String]) session })
4. 排查请求执行条件
- 简化链逻辑:暂时移除链中的
doIf、check等条件判断,只保留feed和请求步骤,排除因前置步骤失败导致请求被跳过的可能。
5. 验证请求参数占位符位置
- 检查请求结构:GET请求需确保URL中的占位符正确(如
"/search?assetId=#{edlAssetId}");POST请求的JSON Body需将占位符包裹在字符串内(如"""{"assetId": "#{edlAssetId}"}"""),避免占位符未被Gatling解析。
内容的提问来源于stack exchange,提问作者emeraldgold07
相关产品推荐
相关产品推荐

