scala - 如何创建自己的具有扩展功能的 exec 函数?
问题描述
所以我有许多看起来或多或少像的加特林休息调用函数:
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))
<-- 将正文、状态和标题保存为会话变量
.exec(session => {validateResponse(session)})
<-- 正在根据我的自定义需求验证状态、正文和标题。
.pause(Config.minDelayValue seconds, Config.maxDelayValue seconds)
<-- 用于我所有交易的模拟级别暂停
这三个函数在我所有的 API 调用上都执行,这对我来说意味着数百行代码重复...
我正在寻找一种创建/覆盖 .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))
推荐阅读
- reactjs - 如何使用 React 和 Hooks 选择不同的卡片并将选择的卡片返回给父级?
- reactjs - 我应该如何减少这种反应本机代码?
- python - Luhn 的算法适用于除 AMEX 卡 (Python3) (cs50/pset6/credit) 之外的所有信用卡
- flutter - ShrinkWrap Horizontal ListView inside Column with 'mainAxisSize: MainAxisSize.min' 给出错误:'constraints.hasBoundedHeight': is not true
- eloquent - 在 laravel 中删除包时从表中删除列
- excel - 想要将列表框中的信息传输到主表中的单独行中
- python - PHP python NLTK 集成
- bash - 在保留目录修改日期的同时递归删除 .DS_Store 和 ._.DS_Store
- python - python cytpes创建回调函数 - 分段错误(核心转储)
- postgresql - 从 azure 容器实例备份 postgresql