前言
本文介绍Locust框架中两种前置、后置操作。一种是用户级别的前后置,在任务类或者用户类中定义on_start,on_stop方法实现前、后置操作,且每个用户只执行一次。且用户类中的前置操作先与任务类中前置操作执行,后置操作在任务类的后置操作之后执行。第二种是模块级别的前后置操作,使用event类中的@events.test_start.add_listener和@events.test_stop.add_listener装饰器,且仅在整个负载前运行前置,负载结束后运行后置。
一、用户级别前后置代码演示
from locust import HttpUser, task, TaskSet
import os
class Test1(TaskSet):
def on_start(self):
print("测试开始")
def on_stop(self):
print("测试停止")
@task
def my_task(self):
with self.client.get('/v2/zoho/getZohoNetwork', catch_response=True) as re:
# print(re.text)
if '研发' in re.text:
re.success()
else:
re.failure('fail')
class Test(HttpUser):
tasks = [Test1]
def on_start(self):
print("TEST_START")
def on_stop(self):
print("TEST_STOP")
# min_wait = 100
# max_wait = 1000
# if __name__ == '__main__':
# os.system("locust -f test_01.py --host=http://10.2.2.84:8087")
执行结果查看:
二、 模块级别前后置代码演示
from locust import HttpUser, task, TaskSet
from locust import events
#下面2个函数分别代表前置和后置操作,函数名任意,函数中的参数为固定写法。函数内定义自己的操作,如数据库链接和释放。
@events.test_start.add_listener
def on_test_start(environment, **kwargs):
print("A new test is starting")
@events.test_stop.add_listener
def on_test_stop(environment, **kwargs):
print("A new test is ending")
class Test1(TaskSet):
@task
def test01(self):
print("测试01")
class Test(HttpUser):
tasks = [Test1]
# min_wait = 100
# max_wait = 1000
# if __name__ == '__main__':
# os.system("locust -f test_01.py --host=http://10.2.2.84:8087")
执行结果查看:
A new test is starting [2022-04-02 18:07:07,666] chengkedeMacBook-Pro.local/INFO/locust.runners: Ramping to 2 users at a rate of 2.00 per second [2022-04-02 18:07:07,667] chengkedeMacBook-Pro.local/INFO/locust.runners: All users spawned: {"Test": 2} (2 total users) 测试01 测试01 A new test is ending