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): ...