运行 多个用户时出现 Gatling 错误 - 'httpRequest-2' 执行失败:未定义名为 'access_token' 的属性

Gatling Error when running multiple users - 'httpRequest-2' failed to execute: No attribute named 'access_token' is defined

我是 Gatling 的新手,一直在尝试设置一个测试,让我的用户登录,获取访问令牌,然后使用该令牌执行一些简单的获取请求。有 1-2 个用户工作正常,但是一旦我开始增加用户,我就开始收到这个错误的垃圾邮件:

[ERROR] i.g.h.a.HttpRequestAction - 'httpRequest-2' failed to execute: No attribute named 'access_token' is defined

我认为这可能与我保存和使用访问令牌的方式有关?

class GatlingTest extends Simulation {

    val httpProtocol = http
        .baseUrl("https://myurl.com/api/v1")
        .inferHtmlResources(BlackList(""".*\.js""", """.*\.css""", """.*\.gif""", """.*\.jpeg""", """.*\.jpg""", """.*\.ico""", """.*\.woff""", """.*\.woff2""", """.*\.(t|o)tf""", """.*\.png""", """.*detectportal\.firefox\.com.*"""), WhiteList())
        .acceptLanguageHeader("en-GB,en;q=0.5")
        .upgradeInsecureRequestsHeader("1")


    object GetUserData {

        val userData = exec(http("Get_User_Data")
            .get("/user")
            .header("Authorization", "Bearer ${access_token}"))
            .pause(1)
    }

    object GetUserInfo {

        val userInfo = exec(http("Get_User_Info")
            .get("/userInfo")
            .header("Authorization", "Bearer ${access_token}")
            .header("Accept", "application/json"))
            .pause(1)

    }

    object Login {
        val sentHeaders = Map("api_key" -> "nnxzv336wt2374h6zw5x24qd", "Content-Type" -> "application/x-www-form-urlencoded", "Accept" -> "application/json")

        val login = exec(http("Login_User")
            .post("/login")
            .basicAuth("username", "password")
            .headers(sentHeaders)
            .body(StringBody("grant_type=password&username=username@username.local&password=12345"))
            .check(jsonPath("$.access_token").saveAs("access_token"))


        )
    }

    val user = scenario("User").exec(Login.login).exec(GetUserData.userData, GetUserInfo.userInfo)

    setUp(
        user.inject(
            rampUsers(5).during(2.seconds),
        ).protocols(httpProtocol)
    )
}

我已经在 get 请求中添加了 Authorization Bearer,就像我提到的那样它确实有效,但是一旦涉及 3 个以上的用户,我就会收到错误消息。

这意味着 login 请求失败,因此用户无法在那里捕获 access_token