2016-05-16 49 views
0

我想调用'myActionID'变量的值。我怎么做? 如果我将静态值(如“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。先谢谢了。虽然加特林执行这个脚本,我得到这个错误

错误ighttp.action.HttpRequestAction - “的HttpRequest-3”未能 执行:无指定属性“myActionID”被定义

+1

尝试:'“actionId”:$ {myActionID}' – antikantian

+0

@antikantian:与您的意见,但错误尝试将显示“无指定属性‘myActionID’被定义” – Peter

回答

2

斯卡拉有多种字符串插值机制(见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前置到字符串字面量,并预先计划在变量名的美元符号。

+0

我不能添加你行编译后的代码提到val str = s“”“....”“” – Peter

+0

不起作用,它给出错误status.find.in(200,304,201,202,203,204,205,206,207,208,209),b 1(100.0%)ut实际发现400. 其他任何方式??尝试几乎所有的组合, “actionId”:$ actionIdD,“actionId”:$ {actionIdD},“actionId:$ actionIdD”,“actionId”:+ actionIdD,s“actionId:$ actionIdD”,s“actionId “:$ actionIdD 但给出相同的错误 – Peter

+0

尝试单独从Gatling请求测试字符串创建 - 您可能正在查看错误的地方。我粘贴的代码在Scala REPL中成功执行并插入myActionID的值 - 由于没有足够的上下文,我无法保证其他任何内容(json的正确性,任何其他代码),并且您的错误可能来自此处。 .. –