在三重qouted字符串中使用gatling会话变量

时间:2017-08-04 10:02:58

标签: scala performance-testing gatling scala-gatling gatling-plugin

如何在StringBody中使用会话变量?

我已将exec定义为

val migrateAsset = exec(_.set("assetId", AssetIdGenerator.generateRandomAssetId()))
      .exec(http("Migrate Asset")
      .post(s"$url/asset/metadata")
      .header("Content-Type", "application/json")
      .header("Authorization", s"Bearer ${authToken}")
      .body(StringBody(
          s"""
            |{
            |    "objectType" : "DocumentType",
            |    "fileName" : "main.xml",
            |    "locations" : [
            |        {
            |            "region" : "eu-west-1",
            |            "url" : "https://s3-eu-west-1.amazonaws.com/${bucketName}/${assetId}"
            |        },
            |        {
            |            "region" : "us-east-1",
            |            "url" : s"https://s3.amazonaws.com/${bucketName}/${assetId}"
            |        }
            |    ],
            |    "format" : "MAIN",
            |    "mimeType" : "text/plain"
            |}
          """.stripMargin
      ))
      .check(status.is(200)))

在体内,我希望同样的assetId通过欧洲西部和美国东部地区。因为,assetId是随机生成的,所以我将它存储在会话变量中,以确保我对两个位置都使用相同的assetId。

但我不能以StringBody格式传递assetId。它一直给我错误,

  

AssetsMigrationLoadSimulation.scala:31:找不到:值   由assetid               | “url”:“https://s3-eu-west-1.amazonaws.com/ $ {bucketName} / $ {assetId}”

1 个答案:

答案 0 :(得分:0)

正如Hans-Peter所提到的那样-您的IDE看到了您用来引用gatling会话参数的$ {...},并决定您要进行常规的scala字符串插值-因此将其放在在字符串前面。

删除“ s”,这应该可以工作