Gatling技术问题:如何访问会话数组中的单个元素?
访问Gatling会话变量中的数组元素
嗨,作为Gatling和Scala新手,能搞定正则提取+数组转换这一步已经超棒啦!针对你存在ChildClientIDs里的WrappedArray,有几种简单的方式可以访问单个元素并在请求中使用:
1. 按索引直接获取指定元素
Gatling的EL表达式支持直接通过索引访问数组(WrappedArray会被当作数组处理),索引从0开始。比如要取第一个ID,直接用${ChildClientIDs(0)},第二个就用${ChildClientIDs(1)},以此类推。
示例代码:
exec(http("Get Child Details") .get("/api/children/${ChildClientIDs(0)}") // 取第一个ID .check(status.is(200)) )
2. 随机获取一个元素
如果你的测试场景需要随机选取数组里的ID(比如模拟真实用户的随机操作),可以用Gatling内置的random方法,直接写${ChildClientIDs.random}就行,不用自己写随机逻辑。
示例代码:
exec(http("Get Random Child Details") .get("/api/children/${ChildClientIDs.random}") // 随机选一个ID .check(status.is(200)) )
3. 遍历数组中的每个元素
如果需要对每个ID都发起一次请求,可以用foreach循环结构,把数组里的每个元素赋值给临时会话变量,再在请求中引用这个临时变量。
示例代码:
foreach("${ChildClientIDs}", "currentChildId") { // 遍历ChildClientIDs,每个元素存到currentChildId里 exec(http("Get Details for ${currentChildId}") .get("/api/children/${currentChildId}") .check(status.is(200)) ) }
另外补充一句:你存的WrappedArray是Scala的集合类型,Gatling完全支持对它进行这些操作,不用额外做类型转换,直接用EL表达式调用就行~
内容的提问来源于stack exchange,提问作者Puddleduck
相关产品推荐
相关产品推荐

