仅在检查成功时才调用函数?
Call a function only if a check is success?
我只想在响应返回字符串 'Success' 时才将会话属性写入文件。
我正在尝试这样做:
.check(substring("success").onSuccess(writeThisToFile(<my variable here>))
我发现这与 IDE 所说的不符。有什么方法可以根据响应检查的结果调用函数吗?
为此,您可以在 bodyString
上使用方法 .transform()
。它采用 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:一些常量值 + 当前时间戳,然后如果响应包含 "success":
,则将时间戳保存到文件
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])
}
}
)
)
)
这一定有效
.asLongAs(session => ( YOUR CONDITION ) ) {
exec( http("Poll") )
}
我只想在响应返回字符串 'Success' 时才将会话属性写入文件。
我正在尝试这样做:
.check(substring("success").onSuccess(writeThisToFile(<my variable here>))
我发现这与 IDE 所说的不符。有什么方法可以根据响应检查的结果调用函数吗?
为此,您可以在 bodyString
上使用方法 .transform()
。它采用 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:一些常量值 + 当前时间戳,然后如果响应包含 "success":
,则将时间戳保存到文件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])
}
}
)
)
)
这一定有效
.asLongAs(session => ( YOUR CONDITION ) ) {
exec( http("Poll") )
}