首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过提供用户列表使用locust.io的方法

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

Stack Overflow用户
提问于 2014-04-11 23:07:43
回答 3查看 18.9K关注 0票数 33

我需要对系统进行压力测试,而http://locust.io似乎是最好的方法。但是,它似乎被设置为每次都使用相同的用户。我需要每个产卵以不同的用户身份登录。我该如何设置它呢?或者,有没有其他系统可以很好地使用?

EN

回答 3

Stack Overflow用户

发布于 2015-10-07 18:13:35

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

代码语言:javascript
复制
# 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

用户和用户代理可以由一个函数调用。通过这种方式,我们可以将测试分发给多个用户和不同的用户代理。

代码语言:javascript
复制
# 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']] 
票数 14
EN

Stack Overflow用户

发布于 2016-03-22 22:25:26

在为分布式系统实现此功能时,我采用了一种略有不同的方法。我利用了一个非常简单的flask服务器,我在TaskSet的on_start部分对它进行了get调用。

代码语言:javascript
复制
from flask import Flask, jsonify
app = Flask(__name__)

count = 0    #Shared Variable

@app.route("/")
def counter():
    global count

    count = count+1
    tenant = count // 5 + 1
    user = count % 5 + 1

    return jsonify({'count':count,'tenant':"load_tenant_{}".format(str(tenant)),'admin':"admin",'user':"load_user_{}".format(str(user))})

if __name__ == "__main__":
    app.run()

通过这种方式,我现在有了一个端点,我可以在我运行它的任何主机上获得http://localhost:5000/。我只需要让从系统可以访问这个端点,而不必担心重复的用户或由于有限的user_info集而导致的某种类型的循环效果。

票数 4
EN

Stack Overflow用户

发布于 2017-06-09 08:20:30

在这里引用@heyman的答案。示例代码可以工作,但是继续启动/停止测试最终会清除USER_CREDENTIALS列表,并开始抛出错误。

我最后添加了以下内容:

代码语言:javascript
复制
from locust import events # in addition to the other locust modules needed

def hatch_complete_handler(**kw):
    global USER_CREDENTIALS
    USER_CREDENTIALS = generate_users() # some function here to regenerate your list

events.hatch_complete += hatch_complete_handler

一旦你的蜂群完成孵化,这将刷新你的用户列表。

还要记住,您需要一个比您希望生成的用户数更长的列表。

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

https://stackoverflow.com/questions/23016278

复制
相关文章

相似问题

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