先看例子:
from locust import TaskSet, HttpLocust, task import os class MyTaskSet(TaskSet):
"""
TaskSet类定义了每个用户的任务集合,测试任务开始后,每个 Locust 用户会从 TaskSet 中随机挑选一个任务执行,然后随机等待 HttpLocust 类中定义的 min_wait和 max_wait 之间的一段时间,执行下一个任务
""" def setup(self): print("task set_up") def on_start(self):
"""虚拟用户启动task时运行""" print("start") @task def one(self): print("one") @task(3) def two(self): print("two") def on_stop(self):
"""虚拟用户结束task时运行""" print("stop") def teardown(self): print("task tear_down") class WebSiteUser(HttpLocust): task_set = MyTaskSet host = "http://www.baidu.com" min_wait = 10000 max_wait = 10000 print("aaa") def setup(self): print("locust set_up") def teardown(self): print("locust tear_down")
依次执行如下描述,观察运行结果
命令行执行命令 locust -f ssql.py(上述代码的文件名),运行结果为:
浏览器访问http://localhost:8089/,设置并发用户为3个,点击Start swarming,运行结果为:
点击web页面的stop,运行结果为:
命令行下,ctrl+c退出locust,运行结果为:
说明:
Locust类有setup和teardown,TaskSet类有setup、teardown、on_start、on_stop。
每次启动locust时运行setup方法,退出时运行teardown方法,locust执行TaskSet时运行TaskSet的setup方法,退出时运行teardown方法,每个虚拟用户执行操作时运行on_start方法,退出时执行on_stop方法,运行上面的脚本,执行顺序如下:
执行顺序:Locust setup → TaskSet setup → TaskSet on_start → TaskSet tasks → TaskSet on_stop → TaskSet teardown → Locust teardown
参考:https://www.cnblogs.com/monogem/p/10712764.html