【问题标题】:With Locust, how can you access a specific locust-user from within a task?使用 Locust,您如何从任务中访问特定的 locust 用户?
【发布时间】:2021-02-08 21:30:06
【问题描述】:

我正在使用 Locust 向端点发送各种 http 请求。端点有时可能会返回 401,表示 locust 用户需要新的承载令牌。 locust 是否提供了访问进行给定调用的 locust 用户的方法?

如果服务器返回 401,我希望能够添加类似 WebUser.login() 之类的东西

class WebUser(HttpUser):
    tasks = {LoadTasks}
    bearer = ""
    on_start = login() //gets a bearer-token for the 'bearer' field.


class LoadTasks(TaskSet):
    endpointPath = "/domain/subdomain/endpoint"

    @task(5)
    def put(self):
        path = self.endpointpath
        response = self.client.put()
                                                           
        if response.status_code == 401:
            // WebUser to call authorization endpoint and retrieve new access_token
            // i.e. locust-user.login()
           

【问题讨论】:

    标签: locust


    【解决方案1】:

    您不必担心做任何特别的事情。 Locust 将获取您在任务中编写的代码并以每个用户的身份自动运行它,从而抽象出并发性。编写您的代码,就好像您要以单个用户的身份运行它一样,并且几乎总是应该可以工作。

    所有这一切都只是说,是的,您的代码应该按原样工作,以完成您想要的工作。您可以像这样检查 401 并告诉它请求一个新令牌。

    【讨论】:

    • 但是如何从“put”任务中访问 WebUser 的“bearer”属性?
    • 不要将其存储在那里。将其存储在 LoadTasks 类中。
    【解决方案2】:

    来自文档: https://docs.locust.io/en/stable/tasksets.html#tasksets

    TaskSet 实例包含对 User - self.user 的引用。它还有一个指向其用户客户端属性的快捷方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多