locustfile就是一份正常的Python代码文件. locustfile的唯一要求是至少要包含一个Locust
类(或其派生类), 例如测试HTTP请求时, 至少要包含一个HttpLocust
类.
Locust 类
一个Locust
类代表一类模拟用户。
一个Locust
类 必须 定义一个 task_set
属性,用于指向一个TaskSet
类。TaskSet
类定义了一系列用户行为,具体内容在后面会介绍到。
另外还有一对常用属性就是 min_wait
/max_wait
,分别定义虚拟用户执行两个task之间的最小/最大等待时间,默认值1000,所以不声明这两个属性时,每个task之间默认会有1秒等待时间。
可以参考下面的例子与注释理解一下Locust类:
from locust import Locust, TaskSet, task
class MyTaskSet(TaskSet):
@task
def my_task(self):
print("executing my_task")
class MyLocust(Locust):
task_set = MyTaskSet # task_set属性指向一个TaskSet类
min_wait = 5000 # 每个task执行间隔最少5秒
max_wait = 15000 # 每个task执行间隔最多15秒
更多
Locust
类中的属性请参考官方文档。
TaskSet 类
TaskSet
类,从字面上理解,就是一系列task的集合。task定义了用户某些行为,例如“请求某个页面”,“搜索某个产品”等等。TaskSet
类相当于定义了Locust
类定义的用户需要执行哪些测试行为。
当一个压力测试启动,每个Locust
类的实例会执行属性task_set
指向的TaskSet
测试集,然后每个TaskSet
类会调用执行一个task,然后在上节提到的min_wait
和max_wait
之间取一个随机等待时间,然后再执行下一个,如此往复。
你需要在TaskSet
类中编写一些方法用于实现用户行为,声明task方法需要将这些方法使用task
装饰器装饰。
task
装饰器最简单的用法可以参考上一节中的代码。除了直接装饰,我们还可以添加一个权重值,task之间执行的次数比值会与他们的权重比值相同:
class MyTestSet(TestSet):
@task(1)
def a:
do_something
@task(3)
def b:
do_something
上述例子中,task b的权重是a的三倍,因此a执行一次时,b会执行3次。
翻译自
locust document - writing a locustfile
更多Locust教程正在路上,欢迎关注简书专题《测试开发实践》
扫码加微信群
网友评论