当前位置: 首页 > 知识库问答 >
问题:

如何使用Gatling中的进纸器生成具有随机值的多值映射并注入请求正文

柴飞星
2023-03-14

我正在为api编写负载测试,并希望创建一个提要器,该提要器生成随机值以注入POST请求的正文。我最初尝试从留档复制随机电子邮件示例并将其他字段添加到生成的映射中,但当这不起作用时,我进入了一个字段,基本上复制了留档;然而,即使这样也不起作用,出于某种原因。这里有很多解决方案也使用这种语法,但我正在做的一些事情导致我尝试注入正文的字段在请求发出时为空。

当前代码:

val userFeeder: Iterator[Map[String, Unit]] =
    Iterator.continually(Map("userName" -> ("user_" + Random.alphanumeric.take(15).mkString)))

var scn: ScenarioBuilder = scenario("GENERATE USER")
.feed(userFeeder)
.exec(
  http("CREATE USER")
  .post(userBaseUrl)
  .headers(userHeaders)
  .body(StringBody("userName: ${userName}")))


setUp(
  scn.inject(atOnceUsers(1))
)

理想情况下,我希望能够扩展馈线,以包括多个值,即。

 val userFeeder: Iterator[Map[String, Unit]] =
     Iterator.continually(Map("userName" -> ("user_" + Random.alphanumeric.take(15).mkString),
                              "userEmail" -> (Random.alphanumeric.take(15).mkString) + "@random.edu"),
                              "address" -> Random.alphanumeric.take(15).mkString)))

等等,但我有点困惑,为什么我当前的代码甚至不能工作,因为它似乎非常忠实地遵循了文档示例。尽管尝试了几种不同的策略,但请求中的值始终为空。

日志输出

body:StringChunksRequestBody{contentType='application/json', charset=UTF-8, content=userName: ()}

共有1个答案

翁昊乾
2023-03-14

我知道了。事实证明,即使Feeder是迭代器的包装器,我想要做的正确方法是这样声明它:

val userFeeder: Feeder[Any] =
 Iterator.continually(Map("userName" -> ("user_" + Random.alphanumeric.take(15).mkString),
                          "userEmail" -> (Random.alphanumeric.take(15).mkString) + "@random.edu"),
                          "address" -> Random.alphanumeric.take(15).mkString)))
 类似资料:
  • 我正试图让盖特林为每个POST请求创建随机数据。我关注了stackoverflow和其他地方的一些帖子。我想出了这个方案- 然而,当我运行这段代码时,它只调用我的feeder一次,以创建一个UUID,并在整个负载测试中重新使用相同的UUID。 在遵循这条线索之后,我创建了上面的代码。我用的是加特林2.2.5。这是我的sbt配置-

  • **使用Gatling进行随机负载测试**我想测试我构建的API以获得更高的负载,因此,我必须生成大量随机电子邮件(我知道目前服务器上没有电子邮件检查,所以我只创建随机字符串)。我使用的工具是gatling-charts-highcharts-bundle-3.0.0,我查看了关于如何解决这个问题的其他问题和网页,并获得了使用feeders的信息。我尝试了下面的代码,但我不明白为什么总是会出现一个

  • 我有一个非常简单的场景,可以从只包含一个标题为的列的CSV文件中获取随机值。然后,我想把这个值粘贴到POST请求的主体中。我的请求主体的示例如下:。因此,我需要使用CSV文件中的值,而不是。以下是我的反馈和场景: 这个例子是我迄今为止所做的最接近的实现。但它并不像我预期的那样有效。我无法将进纸器中的值粘贴到

  • 假设我有一组字符串和一个散列函数(或任何单边函数)和一个测试函数。我想用Java8流创建一个从输入字符串到通过测试函数的哈希值的映射。我的问题是如何在中编写? 看来老的for循环是最简洁的解决方案。

  • 我有一个文件,其中包含Json请求体。我想使用constantUsersPerSec(...)对每秒发送恒定数量请求的Web进行基准测试。 但是,每次发送请求时,我都希望从请求列表中获取请求(随机或循环,我不在乎)。 我不知道该怎么对付加特林。使用以下代码,请求被随机选择一次,同一请求被反复发送。这不是我想要的 我的代码:

  • 问题内容: 我需要生成介于0(含)到n(不含)之间的任意大随机整数。我最初的想法是调用nextDoublen并乘以n,但是一旦n变得大于2 53,结果将不再均匀分布。 BigInteger 具有以下可用的构造函数: public BigInteger(int numBits, Random rnd) 构造一个随机生成的BigInteger,该整数均匀地分布在0到(2 numBits -1)(包括0