Locust中的TaskSet 任务执行 get\post

Locust 是一个用 Python 编写的开源的负载测试工具。 它允许您针对模拟用户行为的 Web 应用程序编写测试,然后按规模运行测试以帮助查找瓶颈或其他性能问题。

目录

1个任务

2个任务随机执行

2个任务按权重执行

2个任务连续或特殊顺序执行

client.post()


 

下面是 locustfile.py 的一个例子,它定义了一个简单的用户行为,它由一个获取特定网页的“任务”组成:

1个任务

from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):  
    @task  
    def get_something(self):      
    self.client.get("/something")
class WebsiteUser(HttpLocust):  
    task_set = UserBehavior

2个任务随机执行

class UserBehavior(TaskSet):
    @task
    def get_something(self):
        self.client.get("/something")
    @task
    def get_something_else(self):
        self.client.get("/something-else")

当上面的 UserBehavior 运行时,Locust 将在每个任务之间随机选择并运行它们。 如果你想为不同的任务定义权重,那么你可以按照下面的方法来加权:

2个任务按权重执行

class UserBehavior(TaskSet):
    @task(2)
    def get_something(self):
        self.client.get("/something")
    @task(1)
    def get_something_else(self):
        self.client.get("/something-else")

权重定义了所有任务执行的比例,所以这里 get_something 在负载测试中的频率会是 get_something_else 的两倍。

您也可以编写嵌套的任务,以执行一系列连续的或有特殊顺序的任务。 这使您可以通过多个请求来定义用户操作流。 例如:

2个任务连续或特殊顺序执行

class UserBehavior(TaskSet):
    @task
    def get_something(self):
        self.client.get("/something")
    @task
    def get_something_else(self):
        self.client.get("/something-else")
    @task
    def get_two_things(self):
        self.get_something()
        self.get_something_else()

TaskSet 类可以有选择地声明一个 on_start 函数,当模拟用户开始执行该 TaskSet 类时会调用该函数。 在开始负载测试之前,可以使用它来登录:

client.post()

class UserBehavior(TaskSet):
    def on_start(self):
        self.client.post("/login", 
        {
            'username': 'foo', 'password': 'bar'
        })
    @task
    def get_something(self):
        self.client.get("/something")

Locust 是一个非常有用的负载测试工具,特别是作为一个开源项目。 如果您的代码库是基于 Python 的,由于有机会从现有的代码库中获取数据,模型或业务逻辑,所以这自然是您可以使用的最舒服的工具,但即使您不使用 Python,也可以轻松整合它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值