1

我意识到我可以将响应正文保存在虚拟用户的会话中:

  val session: Session = Session("MySCN", "123")
  val scn = scenario("MySCN")
    .exec(http("my_request")
    .post(serverURL)
    .headers(headers)
    .body(InputStreamBody(Helper.getByteArrayInputStream))
    .check(status.is(200), bodyBytes.saveAs("responseBody")))

   //key not found...
   session("responseBody").as[ByteArray]

如何从这个(隐式?)会话中读取 responseBody?我也创建了一个显式会话......

编辑:

根据答案,我已经澄清了我的情况。在答案中,我不知道函数transformBytes是如何工作的。

4

2 回答 2

0

将函数传递给 Gatling DSL 方法:

.body(ByteArrayBody(session => session("responseBody").validate[Array[Byte]].map(transformBytes)))

或在 exec 块中执行此操作并将转换结果存储回新属性中

exec { session =>

  session("responseBody").validate[Array[Byte]]
    .map(transformBytes)
    .map(newBytes => session.set("newBytes", newBytes))
}

请注意,您可能希望从会话中删除原始字节,这样它们就不会在内存中停留太久并最终出现在旧版本中。

于 2014-11-19T13:31:04.783 回答
0

根据斯蒂芬妮的回答,这对我有用:

 val scn = scenario("MySCN")
    .exec(http("my_request")
    .post(serverURL)
    .headers(headers)
    .body(InputStreamBody(Helper.getByteArrayInputStream))
    .check(status.is(200), bodyBytes.saveAs("responseBody")))

    .exec(session=>{
    val theResponse = session("responseBody").validate[Array[Byte]]
    //Analyse theResponse...
    val bas = new ByteArrayInputStream(theResponse.get)
    //... and make sure to return the session
    session
  })

所以不需要明确的用户会话。

于 2014-11-24T09:37:40.407 回答