性能测试工具 Locust 的 API 介绍-----TaskSet 类和 task decorator

Sorin · 2018年04月08日 · 1563 次阅读

TaskSet 类

定义 Locust 用户将执行什么样的任务的类。

当 TaskSet 开始运行时,它将从 tasks 属性中选择一个任务,执行它,调用它的 wait 函数,它将在 min_wait 和 max_wait 毫秒之间休眠一个随机数 。然后它将安排另一个执行任务等等。

TaskSet 可以嵌套,这意味着 TaskSet 的 tasks 属性可以包含另一个 TaskSet。如果嵌套的 TaskSet 计划执行,它将被实例化并从当前执行的 TaskSet 中调用。然后,当前运行的 TaskSet 中的执行将被移交给嵌套的 TaskSet,该 TaskSet 将继续运行,直到它抛出一个 InterruptTaskSet 异常,这在 TaskSet.interrupt() 被调用时完成 。(执行将继续在第一个 TaskSet)。

client
引用父类 Locust 的 click 属性。

interrupt(reschedule = True )
中断 TaskSet 并将执行控制权交给父 TaskSet。

如果 reschedule 为 True(默认),父 Locust 将立即重新计划并执行新任务

这个方法不应该被父 TaskSet(即立即附加到 Locust 类 “ task_set” 属性)的 TaskTable 调用,而是在层次结构下面的嵌套 TaskSet 类中。

locust =无
当 TaskSet 已被实例化时,将引用 Locust 类实例

max_wait =无
执行 Locust 任务之间的最长等待时间。可用于覆盖父 Locust 类中定义的 max_wait,如果在 TaskSet 上未设置,将会使用 Locust 类中的。

min_wait =无
执行 Locust 任务之间的最短等待时间。可用于覆盖父 Locust 类中定义的 min_wait,如果在 TaskSet 上未设置,将使用 Locust 类中的。

parent =无
当 TaskSet 已被实例化时,将引用父 TaskSet 或 Locust 类实例。适用于嵌套的 TaskSet 类。

schedule_task(task_callable,args = None,kwargs = None,first = False )
将任务添加到 Locust 的任务执行队列。

参数:

task_callable:要执行的 Locust 任务

args:将传递给任务可调用的参数

kwargs:将传递给任务可调用的关键字参数的 Dict。

first:可选关键字参数。如果为 True,则任务将首先放在队列中。

tasks = []
列出代表 Locust 用户要执行的任务。

如果任务是一个列表,则要执行的任务将被随机挑选。

如果任务是一个(callable,int)二元组列表,或者一个{callable:int} dict,那么要执行的任务将被随机挑选,但是每个任务将根据它的相应的 int 值进行加权。所以在以下情况下,ThreadPage 将比 write_post 更可能被挑选十五倍:

class ForumPage(TaskSet):  
    tasks = {ThreadPage:15, write_post:1}  

task decorator(任务装饰器)

task(weight=1)

使用@task修饰符可以在一个 TaskSet 类中添加多个任务,并且可以指定任务的执行比重

class ForumPage(TaskSet):  
    @task(100)  
    def read_thread(self):  
        pass  

    @task(7)  
    def create_thread(self):  
        pass  
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册