gpt4 book ai didi

scala - 使用 UUID.randomUUID().toString 在请求正文中设置 key 给出问题 - scala

转载 作者:行者123 更新时间:2023-12-02 19:57:37 24 4
gpt4 key购买 nike

我刚开始使用 scala 和 gatrin。我正在定义一个场景,该场景正在执行 http post 调用来创建资源。在请求正文的键/字段之一中,我想为名称添加一个唯一标识符,因此使用 UUID.randomUUID(),但是使用以下代码时请求失败。

val uuid = UUID.randomUUID().toString
println(uuid)

val scn = scenario("Testing !")
.exec(http("create resource")
.post("/data")
.body(StringBody(
"""{
"add_name": "${uuid}",
}""")).asJSON
.check(status is(200)))

尽管打印 uuid 确实在控制台中打印了 id,但在发布请求主体上引发了错误,因为我相信“${uuid}”可能是错误的,但我不确定。

非常感谢任何建议/帮助!

最佳答案

你混淆了 gattle 的内部表达式替换和 scala 的字符串插值。

许多 gattle DSL 方法允许您在字符串中使用“${uuid}”等标记 - 当发生这种情况时,gattle 实际上会获取 session 值“uuid”并将其替换。但这仅适用于存在的键在 session 中。如果它们不存在,加特林将仅使用 '${uuid}' 作为字符串文字。

Scala 支持使用 s"$uuid" 进行字符串插值。在本例中,它将构建一个具有 scala 变量“uuid”值的字符串。

就您而言,您有一个“uuid”变量,但尚未放入加特林 session 中。您可以仅将 scala 变量与 scala 字符串插值语法一起使用,但这不会给您期望的结果,因为所有 gatling dsl 方法都定义在启动时执行的构建器 - 您的所有 uuid 将具有相同的值。

您需要做的是构建一个生成随机 uuid 的 feeder,然后使用 gatting feeder 构造在每次执行中获取唯一值。

private val uuidFeeder = Iterator.continually(Map("uuid" -> UUID.randomUUID().toString))

val scn = scenario("Testing !")
.feed(uuidFeeder) //this gets the next random uuid and puts it in the session
.exec(http("create resource")
.post("/data")
.body(StringBody(
"""{
"add_name": "${uuid}",
}""")).asJSON
.check(status is(200)))

关于scala - 使用 UUID.randomUUID().toString 在请求正文中设置 key 给出问题 - scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com