我正在使用session.userId来参数化我的测试请求,如下所示:
exec(http("get request")
.get((s:Session) => "somebaseUrl/" + s.userId.toString ))
是否有可能以不同的方式获得sesion userId,因此我的请求地址更加干净,例如我不能使用lambda?
我尝试使用gatling DSL:
exec(http("get request")
.get("somebaseUrl/${userId}")
然后我得到:No attribute named 'userId' is defined
错误
我可以为我的测试计算一些随机id,但是为什么当gatling已经这样做了。
我提出的唯一解决方案是将userId保存到某个不同的属性,如下所示:
exec((s:Session) => s.set("user_id",s.userId)),
exec(http("test").get("${user_id}"))
但这似乎不对,你必须确保在所有其他请求之前调用该集。
答案 0 :(得分:1)
userId是一些内部细节。 Gatling Expression语言仅公开Session属性,即属性Map content。
使用您描述的第一种方式,使用函数,或者不使用Gatling内部并设置您自己的UUID属性(feeder,exec(function)等)。
答案 1 :(得分:0)
为避免使用加特林内部零件,您可以使用供料器:
var userId = 0
feed(Iterator.continually(Map("userId" -> {
userId += 1
userId}.toString)))