我想称之为' myActionID '变量。我怎么做? 如果我将像#34; actionId":1368201这样的静态值传递给myActionID,那么它可以工作,但如果我使用" actionId" :$ {actionIdd}它给出错误。
以下是相关代码:
class LaunchWorkflow_Act extends Simulation {
val scenarioRepeatCount = 1
val userCount = 1
val myActionID = "13682002351"
val scn = scenario("LaunchMyFile")
.repeat (scenarioRepeatCount) {
exec(session => session.set("counter", (globalVar.getAndIncrement+" "+timeStamp.toString())))
.exec(http("LaunchRequest")
.post("""/api/test""")
.headers(headers_0)
.body(StringBody(
"""{ "actionId": ${myActionID} ,
"jConfig": "{\"wflow\":[{\"Wflow\":{\"id\": \"13500145349\"},\"inherit-variables\": true,\"workflow-context-variable\": [{\"variable-name\": \"externalFilePath\",\"variable-value\": \"/var/nem/nem/media/mount/assets/Test.mp4\"},{\"variable-name\": \"Name\",\"variable-value\": \"${counter}\"}]}]}"
}""")))
.pause(pause)
}
}
setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol)
一切正常如果我把值13682002351而不是myActionID。提前致谢。在Gatling中执行此脚本时我得到此错误
错误i.g.http.action.HttpRequestAction - ' httpRequest-3'失败 执行:没有名为' myActionID'已定义
答案 0 :(得分:5)
Scala有各种字符串插值机制(参见docs),可用于在字符串中嵌入变量。所有这些都可以与用于创建多行字符串的三引号"""
结合使用。
在这种情况下,您可以使用:
val counter = 12
val myActionID = "13682002351"
val str = s"""{
"actionId": $myActionID ,
"jConfig": "{\"wflow\":[{\"Wflow\":{\"id\": \"13500145349\"},\"inherit-variables\": true,\"workflow-context-variable\": [{\"variable-name\": \"externalFilePath\",\"variable-value\": \"/var/nem/nem/media/mount/assets/Test.mp4\"},{\"variable-name\": \"Name\",\"variable-value\": \"${counter}\"}]}]}"
}"""
请注意字符串文字前面加上s
,并且变量名前面加上美元符号。
答案 1 :(得分:3)
使用 S内插字符串,我们可以轻松做到这一点:
s"""Hello Word , Welcome Back!
How are you doing ${userName}"""