session-variables - Gatling 同时使用 session.set 和 feed
问题描述
如果我使用.get("/***/quotes-${endPoint}/quotes?source=rtbp&userid=test&symbol=${pTypeSymbol}${authM}${pEqSymbol}")
然后 ${pEqSymbol} 工作,但 ${pTypeSymbol} 将是 ${pEqSymbol}这是不正确的例子 get 它应该在下面的代码中
val getApiKeyScenario = scenario("getApiKey")
.feed(getApiKeyData)
.feed(pEqSymbolFeed)
.feed(pOptionSymbol)
.feed(pOtherSymbol)
.exec(session => session
.set("endPoint", "v1")
.set("pTypeSymbol", "${pEqSymbol}")
.set("authM", "&apikey=***********"))
.exec(http("getApiKeyRequest")
.get("/******/quotes-${endPoint}/quotes?source=rtbp&userid=test&symbol=${pTypeSymbol}${authM}")
.check(status.is(200))
.check(checkIf(doLogResponse) {
bodyString.saveAs("pResponse")
})
)
.doIf(doLogResponse) {
logResponse()
}
如果我尝试.set("pTypeSymbol", pEqSymbolFeed.readRecords.head("pEqSymbol"))
将是循环如果我尝试.set("pTypeSymbol", s"${pEqSymbol.isDefined}")
未找到:值 pEqSymbol 如果我尝试s"${pEqSymbol}"
未找到:值 pEqSymbol
我现在登录的是GET *******/quotes-v1/quotes?source=rtbp&userid=test&symbol=${pEqSymbol}&apikey=******
但应该是GET *******/quotes-v1/quotes?source=rtbp&userid=test&symbol="Here my value from feed"&apikey=******
解决方案
请阅读官方文档:
此表达式语言仅适用于传递给 Gatling DSL 方法的字符串值。当实例化 Gatling 模拟时,此类字符串仅被解析一次。
例如 queryParam("latitude", session => "${latitude}") 不起作用,因为参数不是字符串,而是返回字符串的函数。
在您的示例中,您不需要复制pEqSymbol
到pTypeSymbol
,您可以直接编写:
.exec(session => session
.set("endPoint", "v1")
.set("authM", "&apikey=***********"))
.exec(http("getApiKeyRequest")
.get("/******/quotes-${endPoint}/quotes?source=rtbp&userid=test&symbol=${pEqSymbol}${authM}")
)
)
但是如果你坚持复制,你必须使用Session API:
.set("pTypeSymbol", session("pEqSymbol").as[String])
推荐阅读
- javascript - React.js 翻译组件未显示在浏览器上
- java - log4j.xml 配置未将日志存储到文件
- ios - 从 SwiftUI 到 Storyboard 视图控制器?
- python - 与操作员一起评估列表
- c# - id 在服务器中无法识别带有 runat="server" 的 aspx 元素
- javascript - 数组长度显示不正确
- python - fibnoacci 测试用例问题 - Python
- amazon-web-services - 如何添加运行状况检查以检查我在 aws autoscale 中的实例是否与另一个独立实例建立了成功连接
- asp.net - 带有 ASP.Net Core Identity 登录链接的 Blazor WebAssembly 站点中的网络错误
- android - 无法为抽象类“GoogleServicesTask”创建代理类。使用“com.google.gms:google-services:4.3.4”