如何创建自己的具有扩展功能的 exec 函数?
How can I create my own exec function which has extended functionality?
所以我有很多看起来或多或少像这样的 gatling rest 调用函数:
val restCall = {
exec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson
.check(saveResponseToSession(status,bodyString,header))
)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
}
.check(saveResponseToSession(status,bodyString,header))
<-- 将 body、状态和 header 保存为 session 变量
.exec(session => {validateResponse(session)})
<-- 正在验证状态,body 和 header 根据我的自定义需求。
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
<-- 用于我所有交易的模拟级别暂停
这三个函数在我所有的 API 调用中执行,这对我来说意味着数百行代码重复...
我正在寻找 create/overide .exec 链函数的方法,它将在每次调用结束时包含这 3 个函数。
因此,例如上面的示例将如下所示:
val restCall = {
customExec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson)
但还将包括:
.check(saveResponseToSession(status,bodyString,header))
)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
}
如我在第一个示例中所示。
您可以只使用一个函数,将 ChainBuilder 带到 运行,然后 运行 执行验证和暂停步骤。
val restCall = {
exec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson
.check(saveResponseToSession(status,bodyString,header))
)
}
def validateAndWait(chain: ChainBuilder) =
exec(chain)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
def scn = scenario("action with validation").exec(validateAndWait(restCall))
所以我有很多看起来或多或少像这样的 gatling rest 调用函数:
val restCall = {
exec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson
.check(saveResponseToSession(status,bodyString,header))
)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
}
.check(saveResponseToSession(status,bodyString,header))
<-- 将 body、状态和 header 保存为 session 变量
.exec(session => {validateResponse(session)})
<-- 正在验证状态,body 和 header 根据我的自定义需求。
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
<-- 用于我所有交易的模拟级别暂停
这三个函数在我所有的 API 调用中执行,这对我来说意味着数百行代码重复...
我正在寻找 create/overide .exec 链函数的方法,它将在每次调用结束时包含这 3 个函数。
因此,例如上面的示例将如下所示:
val restCall = {
customExec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson)
但还将包括:
.check(saveResponseToSession(status,bodyString,header))
)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
}
如我在第一个示例中所示。
您可以只使用一个函数,将 ChainBuilder 带到 运行,然后 运行 执行验证和暂停步骤。
val restCall = {
exec(http("RestCall")
.post("/restCall")
.body(ElFileBody("json/body.json")).asJson
.check(saveResponseToSession(status,bodyString,header))
)
}
def validateAndWait(chain: ChainBuilder) =
exec(chain)
.exec(session => {validateResponse(session)})
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
def scn = scenario("action with validation").exec(validateAndWait(restCall))