[英]Using UUID.randomUUID().toString for setting a key in request body giving issues- scala
我是使用 Scala 和 gatling 的新手。 我正在定義一個場景,該場景正在執行 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 但在 post 請求正文上拋出錯誤,因為我認為“${uuid}”可能是錯誤的,但我不確定。
非常感謝任何建議/幫助!
您在 gatling 的內部表達式替換和 scala 的字符串插值之間混淆了。
許多 gatling DSL 方法將允許您在字符串中使用諸如 '${uuid}' 之類的標記 - 當發生這種情況時,gatling 實際上獲取會話值 'uuid' 並將其替換。但這僅適用於會話中存在的鍵. 如果它們不存在,gatling 將僅使用 '${uuid}' 作為字符串文字。
Scala 支持使用s"$uuid"
字符串插值。 在這種情況下,它將構建一個字符串,該字符串具有 scala 變量 'uuid' 的值。
在您的情況下,您有一個 'uuid' 變量,但您還沒有進入 gatling 會話。 您可以將 scala 變量與 scala 字符串插值語法一起使用,但這不會給您預期的結果,因為所有 gatling dsl 方法都定義了在啟動時執行的構建器 - 您的所有 uuid 都將具有相同的值。
您需要做的是構建一個生成隨機 uuid 的 feeder,然后使用 gatling 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)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.