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

郑少龙 · April 08, 2018 · 907 hits

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
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up