【问题标题】:Single setup step in Locust 1.6.0?Locust 1.6.0 中的单个设置步骤?
【发布时间】:2021-07-26 23:08:02
【问题描述】:

我一直在尝试如何只设置一次资源并与使用 locust 创建的用户共享

这是我一直在尝试的:

from locust import HttpUser
from locust.user.task import task

class WebsiteUser(HttpUser):
    def setup(self):
        client = clients.HttpSession(base_url=self.host)
        token = client.post("get-token/", {'email': 'someemail', 'password': 'somepassword'})
        client.headers.update(
            {
                'Authorization': 'Bearer ' + token
            }
        )
    tasks = UserBehavior
    min_wait = 500
    max_wait = 900

如您所见,我想一次性获取令牌并与负载测试时创建的所有其他用户实例共享此令牌。 我想不出办法来实现这一点。 任何形式的帮助将不胜感激:)

【问题讨论】:

    标签: python-3.x api performance-testing load-testing locust


    【解决方案1】:

    您需要将令牌保存在User 之外可访问的变量中,以使其可供所有用户访问,否则每个用户都将创建自己的。

    from locust import HttpUser
    from locust.user.task import task
    
    token = ''
    
    class WebsiteUser(HttpUser):
        def setup(self):
            global token
            client = clients.HttpSession(base_url=self.host)
            token = client.post("get-token/", {'email': 'someemail', 'password': 'somepassword'})
            client.headers.update(
                {
                    'Authorization': 'Bearer ' + token
                }
            )
        tasks = UserBehavior
        min_wait = 500
        max_wait = 900
    

    我不肯定,但您可能还需要在每个请求之前设置标头,而不是设置一次。

    【讨论】:

    • 感谢您的回复。这是我选择的最后手段,我最终还是遵循了设置全局令牌的方法。我只是想知道是否有标准的方法。因为我不确定这是否是最好的方法
    • 一个更好的解决方案是使用类级别变量(例如 WebsiteUser.token)
    • 这是公平的,假设只有一个类你想访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多