Locust学习记录2-locust用户类属性【HttpUser,wait_time,weight和fixed_count】

HttpUser

每个模拟用户定义的类,都必须继承HttpUser,目的时为每个用户提供一个client属性,该属性是一个实例HttpSession,可用于向我们要进行负载测试的目标系统发出HTTP请求

当测试开始时,locust将为它模拟的每个用户创建一个此类的实例,并且每个用户都将开始再他们自己的绿色gevent线程中运行

要使文件成文有效的locustfile,它必须至少包含一个继承自User

wait_time

用法一:

示例:wait_time = between(1,5)

释义:模拟用户在每个任务执行后等待1到5秒的时间

用户的wait_time方法可以很容易的每次执行任务执行后引入延迟。如果没有指定wait_time,则下一个任务将在完成后立即执行

constant在固定的时间内

between在最小值和最大值之间的随机事件

constant_throughput确保任务每秒运行(最多)X次的自适应时间

constant_pacing自适应时间确保任务(最多)每X秒运行一次(它是constant——throughput的数学倒数)

用法二:

示例:

        如果您希望Locust在峰值负载下每秒运行500次任务迭代,您可以使用wait_time=constant_throughput(0.1)和5000的用户计数

        等待时间只能限制吞吐量,不能启动新用户来达到目标。因此,在我们示例中,如果任务迭代时间超过10秒,吞吐量将小于500

        等待时间是在任务执行后应用的,因此如果您的生成率/提升率很高,您可能会在提升期间超过目标

        等待时间适用于任务,而不是请求。例如,如果您指定wait_time=constant_throughput(2)并在您的任务执行两个请求,则您的请求率/PRS 将为每个用户4个

用法三:

可直接在类上声明自己的wait_time方法。

例如,下面的User类会休眠一秒,然后两秒,然后三秒,以此类推

class MyUser(User):
    last_wait_time = 0

    def wait_time(self):
        self.last_wait_time += 1
        return self.last_wait_time

    ...

weight属性

如果文件中存在多个用户类别,并没有在命令行中指定用户类别,Locust将生成相同数量的每个用户类别。您可通过命令行参数传递来指定要使用同一locustfile中的哪些用户类:

locust -f locustfile.py webMylocust

如果您希望模拟某种类型的更多用户,您可在这些类上设置权重属性。

举例来说,网络用户的可能性是移动用户的三倍:

示例代码:

class WebUser(User):
    weight = 3
    ...

class MobileUser(User):
    weight = 1
    ...

fixed_count属性

weight和fixed_count属性用法相同,在使用fixed_count属性的情况下,weight属性将被忽略,并且将生成准确计数的用户。

在下面的示例中,将仅生成1个AdminUser实例,以进行一些特定的工作,更准确的控制独立与用户总数的请求计数

class AdminUser(User):
    wait_time = constant(600)
    fixed_count = 1

    @task
    def restart_app(self):
        ...

class WebUser(User):
    ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值