当前位置:  开发笔记 > 编程语言 > 正文

通过提供用户列表来使用locust.io的方法

如何解决《通过提供用户列表来使用locust.io的方法》经验,为你挑选了2个好方法。

我需要对系统进行压力测试,而http://locust.io似乎是最好的解决方法.但是,它似乎设置为每次使用相同的用户.我需要每个spawn以不同的用户身份登录.我该如何设置呢?或者,是否有另一个好用的系统?



1> heyman..:

蝗虫作者在这里.

默认情况下,每个HttpLocust用户实例都有一个HTTP客户端,它具有自己独立的会话.

Locust没有任何用于提供用户凭据或类似凭据的功能.但是,您的负载测试脚本只是python代码,幸运的是,您自己实现它是微不足道的.

这是一个简短的例子:

# locustfile.py

from locust import HttpLocust, TaskSet, task

USER_CREDENTIALS = [
    ("user1", "password"),
    ("user2", "password"),
    ("user3", "password"),
]

class UserBehaviour(TaskSet):
    def on_start(self):
        if len(USER_CREDENTIALS) > 0:
            user, passw = USER_CREDENTIALS.pop()
            self.client.post("/login", {"username":user, "password":passw})

    @task
    def some_task(self):
        # user should be logged in here (unless the USER_CREDENTIALS ran out)
        self.client.get("/protected/resource")

class User(HttpLocust):
    task_set = UserBehaviour
    min_wait = 5000
    max_wait = 60000

运行Locust分布式时,上述代码不起作用,因为相同的代码在每个从属节点上运行,并且它们不共享任何状态.因此,您必须引入一些外部数据存储区,从属节点可以使用这些数据存储区来共享状态(例如PostgreSQL,redis,memcached或其他).



2> Mesut GÜNEŞ..:

或者,您可以创建users.py模块来保存测试用例中所需的用户信息,在我的示例中,它保持emailcookies.然后,您可以在任务中随机调用它们.见下文:

# locustfile.py
from locust import HttpLocust, TaskSet, task
from user_agent import *
from users import users_info


class UserBehaviour(TaskSet):
    def get_user(self):
        user = random.choice(users_info)
        return user

    @task(10)
    def get_siparislerim(self):
        user = self.get_user()
        user_agent = self.get_user_agent()
        r = self.client.get("/orders", headers = {"Cookie": user[1], 'User-Agent': user_agent})

class User(HttpLocust):
    task_set = UserBehaviour
    min_wait = 5000
    max_wait = 60000

用户和用户代理可以由函数调用.通过这种方式,我们可以与许多用户和不同的用户代理分发测试.

# users.py

users_info = [
['performancetest.1441926507@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926506@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926501@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926499@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926494@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926493@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926492@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926491@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926490@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926489@gmail.com', 'cookies_created_by_each_user'], 
['performancetest.1441926487@gmail.com', 'cookies_created_by_each_user']] 

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有