mu1*_*988 2 performance-testing gatling
我试图在加特林请求中实现的步骤:
1. 在循环中点击请求。
2. 将 JSON 响应中的“status”值保存到“respStatus”中
3. 将“respStatus”设置为会话变量“workStatus”
4. 递归检查会话变量“workStatus”的值,并在其值发生变化时退出创造其他任何东西。
这是我的代码。下面这个请求在第一次迭代后停止执行,检查响应正文显示 JSON 响应中“创建”的值在停止时没有改变。代码有什么问题或者有其他替代方法可以实现此目的吗?
.doWhile(session => !session(workStatus).as[String].equal("creating"),"index"){
exec(http("Request1")
.get(<URL goes here>)
.header(<Headers in a map>)
.check(jsonPath("$..status").saveAs("respStatus")))
.exec(session => session.set("workStatus","${respStatus}"))
.pause(10)
}.pause(10)
Run Code Online (Sandbox Code Playgroud)
几个错误:
\n\nsession => session.set("workStatus","${respStatus}")\nRun Code Online (Sandbox Code Playgroud)\n\n正如文档中所解释的:
\n\n\n\n\n此表达式语言仅适用于传递给\n Gattle DSL 方法的字符串值。当实例化加特林模拟时,此类字符串仅被解析一次。
\n\n例如,queryParam("latitude", session => "${latitude}") 不会\xe2\x80\x99t\n 工作,因为参数不是字符串,而是返回字符串的函数。
\n
respStatus你从到 的副本workStatus毫无用处。
正确的语法第 1 行是session("workStatus"), 不是session(workStatus)。
在 Scala 中,您会使用==,而不是equals。
请注意 jsonPath 中的通配符路径会导致完整的 JSON 树扫描。如果可能,并且性能是一个问题,您最好使用精确路径。
JsonPath 在当前状态下是失败的,请阅读这篇文章。如果可能,您应该切换到 JMESPath。
你需要headers的不是header传递地图。
.doWhile(session => !session("workStatus").as[String].equal("creating"),"index"){\n exec(http("Request1")\n .get(<URL goes here>)\n .headers(<Headers in a map>)\n .check(jsonPath("$..status").saveAs("workStatus")))\n .pause(10)\n}.pause(10)\nRun Code Online (Sandbox Code Playgroud)\n