性能测试工具Locust使用指南(一)

2017-11-27  本文已影响526人  yytester



from locust import HttpLocust, TaskSet

def login(l):
    l.client.post("/login", {"username":"test_one", "password":"education"})

def index(l):
    l.client.get("/")

def profile(l):
    l.client.get("/profile")

class UserBehavior(TaskSet):
    tasks = {index: 2, profile: 1} #请求比例是index:profile = 2:1

    def on_start(self):
        login(self)

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000 #最小间隔5s
    max_wait = 9000 #最大间隔9s

在这里定义了一些Locust任务(即def login(l),def profile(l),def index(l)),这些任务是正常的Python方法,它们只接受一个参数(Locust类实例)。这些任务在任务属性中的TaskSet类下收集。然后定义一个表示用户的WebsiteUser类,在WebsiteUser类定义模拟用户在执行任务之间应该等待多长时间,以及TaskSet类应该定义用户的“行为”。TaskSet类可以嵌套。
HttpLocust类继承自Locust类,它添加了一个客户端属性(HttpSession的实例),可用于发出HTTP请求。

另一种更方便的定义方式,使用task装饰器:
from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):
    def on_start(self):
        """ on_start is called when a Locust start before any task is scheduled """
        self.login()

    def login(self):
        self.client.post("/login", {"username":"ellen_key", "password":"education"})

    @task(2)
    def index(self):
        self.client.get("/")

    @task(1)
    def profile(self):
        self.client.get("/profile")

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 5000
    max_wait = 9000


上一篇 下一篇

猜你喜欢

热点阅读