gatling - 如何将值从一个场景传递到另一个场景?
问题描述
我有一些端到端的流程,我必须在其中运行服务并将值传递给下一个场景。我可以打印场景中的值,但不能将它们用于下一个场景。
我尝试使用 SaveAs 保存值
val scn_Token1 ={ scenario("Token1")
.exec(actionBuilder = http("Token1")
.post("/getToken")
.body(StringBody(bdy_Token)).asJson
.check(status.is(200))
.check(jsonPath("$.Token").exists)
.check(jsonPath("$..Token")
.find
.saveAs("Token")
)
.check(jsonPath("$..id")
.find
.saveAs("mid")
)
.check(jsonPath("$..otp")
.find
.saveAs("otp")
)
)pause(tnk_token milliseconds)
}
val scn_Auth ={ scenario("Authentication")
.exec(actionBuilder = http("Authentication")
.post(authServiceUrl)
.header("Token", "${Token}")
.header("id", "${id}")
.header("otp", "${otp}")
.body(StringBody(bdy_Auth)).asJson
.check(status.is(200)))
.pause(tnk_Auth milliseconds)
}
setUp(
scn_Token1.inject(nothingFor(dly_token_first seconds),rampUsers(ucnt_token_first) during (ramp_token_first seconds)).protocols(httpConfToken),
scn_Auth.inject(nothingFor(dly_Auth seconds),rampUsers(ucnt_Auth) during (ramp_Auth seconds)).protocols(httpConf)
).maxDuration(test_duration minutes)
我收到类似的错误
“httpRequest-2”未能执行:未定义名为“id”的属性
'httpRequest-2' 执行失败:没有定义名为 'Token' 的属性
我还尝试在场景 1 完成后执行第二种场景的等待时间。但它仍然没有得到价值。
请注意,我不希望在单一场景中合并令牌和身份验证,因为它具有不同的配置。值应该从一个场景传递到另一个场景。请让我知道这里出了什么问题?
解决方案
Gatling 无法在用户之间传递数据 - 如果您需要在每个 scn_Auth 请求之前执行 scn_Token 来设置会话参数,只需将其包含在 scn_Token 中即可。
将 scn_Auth 重新定义为
val scn_Auth ={ scenario("Authentication")
.exec(scn_Token1)
.exec(actionBuilder = http("Authentication")
.post(authServiceUrl)
.header("Token", "${Token}")
.header("id", "${id}")
.header("otp", "${otp}")
.body(StringBody(bdy_Auth)).asJson
.check(status.is(200)))
.pause(tnk_Auth milliseconds)
}
然后只为 scn_Auth 注入用户
推荐阅读
- python - AttributeError:“NumpyArrayIterator”对象没有属性“ndim”
- java - 表 JAVA GUI 没有输出
- module - 如何找出 Prolog 运算符来自哪个模块?
- java - 如何将 JComboBox 作为 JList 中的元素?
- python - 将视图添加到 jupyter notebook 中的交互式 matplotlib 图
- javascript - 下载内容前刷新页面?
- asp.net-core - IIS 永久重定向到旧 URL 的一部分
- sql - ID 在 table1 中可用但在 table2 中不可用,请按日期检查
- mapbox - MapTiler 用透明海洋设置土地多边形填充
- node.js - **node-sass:当 rails new APP_PATH 命令失败**