美文网首页软件测试测试开发实践程序员
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