GatlingKotlin-从第一个呼叫的响应中提取价值并用于下一个呼叫

zphenhs4  于 2023-01-26  发布在  Kotlin
关注(0)|答案(1)|浏览(108)

我将Gatlingkotlin一起使用。
我有一个端点,一旦我调用它,它将返回一个值,我需要在下次调用第二个端点时使用该值。
从我目前所看到的情况来看,我需要提取值并将其存储在gatling's会话中,然后进行检索。但我似乎无法同时访问会话和执行exec。有人能帮我解释一下这应该是什么样子吗...以下是一个示例,大致说明了目前的情况以及我希望如何访问提取的值

exec(
    http("Start")
        .post("/start")
        .body(StringBody("""
                    {
                        "someKey": "someValue"
                    }
                """.trimIndent()))
        .check(jsonPath("$.valueToExtract").find().saveAs("valueToExtract"))
)
.exec { session ->
    val valueToExtract = session.getString("valueToExtract")
    valueToExtract = valueToExtract.substring(5)
    val newSession = session.set("valueToExtract", valueToExtract)
    newSession
}
.pause(1)
.exec(
    http("Second endpoint")
        .put("/v1/endpoint-two")
        .header("Content-Type", "application/json")
        .body(StringBody("""
        {
            "extractedValue": "${session.get("valueToExtract")}" 
        }
    """.trimIndent()))
)
6jjcrrmo

6jjcrrmo1#

使用Gatling Expression Language

("""
        {
            "extractedValue": "#{valueToExtract}" 
        }
    """

注意:您不必分2步完成此操作:你可以直接把一个函数传递给StringBody,在那里你可以获取数据,计算你想要的,然后用插值法计算字符串:

StringBody{ session ->
  val valueToExtract = session.getString("valueToExtract").substring(5)

"""
        {
            "extractedValue": "$valueToExtract" 
        }
    """.trimIndent()
}

相关问题