Locust 的 task 可以理解为业务,至于业务逻辑可以自己写。
请求类型
response = self.client.get("/about") #get
response = self.client.post("/login", {"username":"testuser", "password":"secret"}) #post
配置任务
第一种task配置方式
from locust import HttpLocust, TaskSet
#定义任务
def login(self):
self.client.post("/login", {"username":"ellen_key", "password":"education"})
def index(self):
self.client.get("/")
def profile(self):
self.client.get("/profile")
#定义用户行为
class UserBehavior(TaskSet):
#每个虚拟用户进行访问index两次、profile一次
tasks = {index: 2, profile: 1}
#关键字,on_start,如果有在执行run函数的时执行,理解为前置条件
def on_start(self):
login(self)
#配置
class WebsiteUser(HttpLocust):
task_set = UserBehavior #任务
#设置随机范围,类似于lr里的思考时间,在范围内随机
min_wait = 5000
max_wait = 9000
第二种task配置方式,使用装饰器
from locust import TaskSet, task, HttpLocust
class UserBehavior(TaskSet):
#task装饰器的作用等于task{}
@task
def index(self):
b = self.client.get("/", name='首页') #参数name传了的话,在web统计时显示
#task可以带参数:task(2),等于tasks = {index: 2}
@task
def profile(self):
a = self.client.get("/c66")
def on_start(self):
print "executing my_task"
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 100
max_wait = 500
权重设置
第一种使用:tasks = {index:2,profile:1}
第二种使用:@task(1)
运行时间设置
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 100
max_wait = 1000
stop_timeout = 20 #运行时间设置,这里要用秒,而不是毫秒