0

Gatling 中有 Pebble 模板的官方文档:https ://gatling.io/2018/11/06/gatling-3-pebble-templating/

最后你可以看到代码:

{% for child in children %}
  {
    "id": {{child.id}},
    "name": "{{child.name}}"
  }{% if loop.last %}{% else %},{% endif %}
{% endfor %}

这意味着该children变量是一个列表,其中包含一个带有键的映射,id但是name 如何创建这样的列表并让 Pebble 知道呢?

目前我有一种创建地图列表的方法:

  def getArray(count: Integer): mutable.MutableList[Map[String, String]] = {
    var array = mutable.MutableList[Map[String, String]]()
    for (i <- 0 until count) {
      array += Map(
        "UniqueString" -> UUID.randomUUID.toString,
        "RandomNumber" -> (Random.nextInt(10000) + 10000).toString,
        "contentId" -> UUID.randomUUID.toString
      )
    }
    array
  }

我有一个喂食器:

  val elementsFeeder = Iterator.continually(Map(
    "elements" -> getArray(documentsMultiple)
  ))

我像往常一样喂它:

  def archive = repeat(1){
    feed(elementsFeeder)
    .exec(
    .......

我的鹅卵石模板如下所示:

[
{% for element in elements %}
  Debugging info <element>: {{element}}
  {"name": "{{element.UniqueString}}",
  "value": "{{element.RandomNumber}}"}{% if loop.last %}{% else %},{% endif %}
{% endfor %}
]

但是,当调试行看起来像这样时,我只看到引号之间的空格而不是名称和值:

Debugging info <element>: Map(UniqueString -> 81a92aeb-3966-43ff-8c42-1e0e93ace3a4, RandomNumber0To100000 -> 11775, contentId -> 436701db-d66b-4819-b33e-3e455dbe19fc)

即使我通过.asJava在新的 Map 声明之后添加来更改地图生成以将它们转换为 Java 的地图,我仍然会看到空格和如下输出:

Debugging info <element>: {UniqueString=119593c6-e526-4cca-a2d5-34d57bbfb22d, RandomNumber0To100000=16945, contentId=57385850-670b-484b-96e6-a1ec05c568ac}
4

2 回答 2

0

要使用 pebble 从地图中获取值,您应该像常规 java 地图一样访问它:

{% for element in elements %}
  {"name": "{{element.get("UniqueString"}}",
  "value": "{{element.get("RandomNumber")}}"}{% if loop.last %}{% else %},{% endif %}
{% endfor %}

要创建馈线,我使用 2 种方法。其中一个返回一个新实例,java.util.HashMap第二个创建java.util.ArrayList这些映射中的一个。之后我可以创建进纸器:

val elementsFeeder = Iterator.continually(Map(
  "elements" -> getJavaArray(10)
))
于 2020-09-30T16:17:50.233 回答
0

Pebble 是一个 Java 库,适用于 Java 集合,而不是 Scala 集合。

Gatling 3.4.0 有一些缺点:

  • 我们不会将 Scala Maps 包装成 Java Maps
  • 我们不深度包装/转换会话内容,只有根元素

现在尝试使用 Java 集合。

于 2020-09-26T18:10:09.370 回答