美文网首页软件测试测试开发实践程序员
locust(二) - 编写locustfile基础篇

locust(二) - 编写locustfile基础篇

作者: 严北 | 来源:发表于2018-05-16 23:28 被阅读86次

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_waitmax_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教程正在路上,欢迎关注简书专题《测试开发实践》

扫码加微信群

相关文章

网友评论

    本文标题:locust(二) - 编写locustfile基础篇

    本文链接:https://www.haomeiwen.com/subject/xtahdftx.html