5

如何在 gatling 的 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。

但我不能assetId以 StringBody 格式传递。它不断给我错误,例如,

AssetsMigrationLoadSimulation.scala:31:未找到:值assetId | “网址”:“ https://s3-eu-west-1.amazonaws.com/${bucketName}/${assetId }”

4

1 回答 1

4

正如 Hans-Peter 所提到的 - 您的 IDE 已经看到您用来引用 gatling 会话参数的 ${...} 并决定您正在尝试进行常规的 scala 字符串插值 - 所以它将“s”放在前面的字符串。

删除's',这应该工作

于 2019-05-16T00:08:06.647 回答