首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行多个用户时的Gatling错误- 'httpRequest-2‘执行失败:没有定义名为'access_token’的属性

运行多个用户时的Gatling错误- 'httpRequest-2‘执行失败:没有定义名为'access_token’的属性
EN

Stack Overflow用户
提问于 2021-05-20 10:12:36
回答 1查看 387关注 0票数 0

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

代码语言:javascript
复制
[ERROR] i.g.h.a.HttpRequestAction - 'httpRequest-2' failed to execute: No attribute named 'access_token' is defined

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

代码语言:javascript
复制
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,就像我提到的那样,它确实有效,但是一旦涉及到3+用户,我就会得到错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 10:28:17

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67618332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档