如何在Gatling中使用Scala实现列表grouped分组并解决属性未定义报错
问题原因
你在SessionVal的执行块内定义的listToGroup是仅存在于当前函数作用域的局部变量,没有写入Gatling的会话(Session)对象中,后续步骤从会话中读取listToGroup属性自然会触发不存在的报错。另外你直接返回了原始Session对象,就算写入了修改也不会生效:Gatling的Session是不可变对象,所有修改都会生成新的Session实例,必须返回新实例才能让修改生效。
修正代码
第一步:修改SessionVal逻辑,将分组结果写入Session
val SessionVal = scenario("aaa").exec{ session => val listToGroup = List(1,2,3,4,5,6,7,8) val groupedResult = listToGroup.grouped(3).toList // 将分组结果写入Session,返回修改后的新Session实例 session.set("listToGroup", groupedResult) }
第二步:修改printSessionVal逻辑,按正确类型读取属性
你存入Session的是List[List[Int]]类型的分组结果,不能直接用as[String]做类型转换,需要匹配实际存储类型:
val printSessionVal = scenario("print me").exec{ session => println(session("listToGroup").as[List[List[Int]]]) session }
其他注意事项
- 如果你需要在多个场景之间共享变量,都需要通过Session的
set/get方法操作,局部变量不会跨步骤生效。 - 如果确实需要打印为字符串格式,可以调用
toString方法转换:println(session("listToGroup").as[List[List[Int]]].toString)
内容的提问来源于stack exchange,提问作者Alexb1999
相关产品推荐
相关产品推荐

