如何在Gatling/Scala后续请求中设置动态值作为请求头?
在Gatling中为后续请求添加提取的
bidkid作为请求头 嘿,你已经成功用正则把bidkid提取出来并存成变量了!接下来要把它加到后续请求的请求头里超简单,根据你的需求有两种常用方式:
1. 为单个请求添加请求头
如果只有某一个后续请求需要带这个bidkid头,直接在对应的http请求块里用.header()方法就行,用${bidkid}引用之前保存的变量。记得把示例里的X-Bid-Kid替换成你实际业务需要的请求头名称:
// 先完成值的提取 .exec(http("request_test") .get("https://test/eai/bad") .check(regex("content=\"([0-9A-Z]*)\"").saveAs("bidkid"))) // 后续需要带请求头的目标请求 .exec(http("your_next_request") .get("https://test/your-target-endpoint") // 替换成你的实际接口地址 .header("X-Bid-Kid", "${bidkid}")) // 这里的头名改成你业务要求的名称
2. 全局添加(所有后续请求自动携带)
如果你的测试场景里有多个后续请求都需要带这个bidkid头,不用每个请求都重复写,直接用addHeader方法在提取值之后全局设置一次,后续所有请求都会自动带上这个头:
val testScenario = scenario("Your Test Scenario") // 第一步:提取bidkid变量 .exec(http("request_test") .get("https://test/eai/bad") .check(regex("content=\"([0-9A-Z]*)\"").saveAs("bidkid"))) // 全局添加请求头,后续所有请求都会自动携带 .exec(addHeader("X-Bid-Kid", "${bidkid}")) // 接下来的请求无需额外配置,都会带上这个头 .exec(http("request_1").get("https://test/endpoint-1")) .exec(http("request_2").get("https://test/endpoint-2"))
小提醒
- 注意
bidkid的拼写完全一致(Gatling变量名区分大小写),避免因拼写错误导致请求头带空值 - 可以开启Gatling的调试日志(设置
logLevel = DEBUG),确认bidkid变量是否被正确提取到值,方便排查问题
内容的提问来源于stack exchange,提问作者Magnus Jensen
相关产品推荐
相关产品推荐

