Gatling(Scala)中如何提取Feeder值并截取子串用于搜索请求?
解决Gatling中Feeder数据的字符串截取问题
方法一:直接在Gatling表达式语言中调用字符串方法
Gatling的表达式语言(EL)支持直接对feeder变量调用Java/Scala的字符串方法,无需提前解析变量。你可以直接在请求参数里这么写:
val searchScenario = scenario("Name Search Flow") .feed(yourFeeder) // 替换成你的feeder定义,比如csv("names.csv").circular .exec( http("Search by first letter") .get("https/bla/bla/search") .queryParam("q", "${name.substring(0,1)}") ) .exec( http("Search by first three letters") .get("https/bla/bla/search") .queryParam("q", "${name.substring(0,3)}") )
${name.substring(0,1)}会在运行时自动解析feeder中的name实际值,再执行截取首字母的操作- 如果存在名称长度不足3的情况,可添加容错处理,比如
${name.substring(0, Math.min(name.length(), 3))}
方法二:通过Session手动处理并存储变量
如果需要更复杂的逻辑判断,可以先从Session中取出name值,处理后存入新的Session变量,再在请求中使用:
val searchScenario = scenario("Name Search Flow") .feed(yourFeeder) .exec(session => { val name = session("name").as[String] val firstLetter = name.substring(0,1) val firstThreeLetters = if (name.length >=3) name.substring(0,3) else name session .set("firstLetter", firstLetter) .set("firstThreeLetters", firstThreeLetters) }) .exec( http("Search by first letter") .get("https/bla/bla/search") .queryParam("q", "${firstLetter}") ) .exec( http("Search by first three letters") .get("https/bla/bla/search") .queryParam("q", "${firstThreeLetters}") )
这种方式灵活性更高,适合需要额外逻辑判断的场景。
内容的提问来源于stack exchange,提问作者Imy
相关产品推荐
相关产品推荐

