我只想在响应返回字符串'Success'时将会话属性写入文件。
我正在尝试这样做:
.check(substring("success").onSuccess(writeThisToFile(<my variable here>))
我发现这不像IDE说的那样有效。有没有办法根据响应检查的结果调用函数?
答案 0 :(得分:1)
为此,您可以在.transform()
上使用方法bodyString
。它需要String => T
或(String, Session) => T
类型的函数参数并将其应用于响应主体,因此在您的情况下它将如下所示:
.check(
bodyString.transform(
(body: String, session: Session) => {
if(body.contains("success")){
File("/path/to/file")
.createFile()
.appendAll(session("attributeName").as[String])
}
}
)
)
- 已编辑 -
因此,要将部分请求正文保存到会话中,您需要分别生成该部分,保存到会话属性并在创建正文时使用。例如,假设您要发送包含2个字段的JSON:一些常量值+当前时间戳,然后如果响应包含&#34;成功&#34;:
,则将时间戳保存到文件val exampleScenario = scenario("Example")
.exec(session => {
session.set("timestamp", System.currentTimeMillis)
})
.exec(http("Send data")
.post("http://example.com")
.body(StringBody("""{"constant":123, "timestamp": ${timestamp}}"""))
.asJSON
.check(
bodyString.transform(
(body: String, session: Session) => {
if(body.contains("success")){
File("/path/to/file")
.createFile()
.appendAll(session("timestamp").as[String])
}
}
)
)
)
答案 1 :(得分:-1)
这必须有效
.asLongAs(session => ( YOUR CONDITION ) ) {
exec( http("Poll") )
}