将userId与Gatling DSL一起使用

时间:2016-01-15 12:52:30

标签: gatling

我正在使用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}"))

但这似乎不对,你必须确保在所有其他请求之前调用该集。

2 个答案:

答案 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)))