一、安装部署
最新版本的Locust需要使用python3.6以上版本的解释器,然后使用pip安装即可
pip install locust
二、使用locust发送http/https请求
利用locust插件对http协议接口进行压测时一般情况下需要新建类继承HttpUser,HttpUser的父类是User类,TaskSet属于任务集类,下面根据代码演示介绍2种使用方式。
from locust import HttpUser, task, TaskSet
import os
class Test1(HttpUser):
@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')
#1.新建类继承HttpUser
#2.新建成员方法写入被压测的接口,且需要在方法上加上@task装饰器,代表压测目标
#3.成员方法中编写http接口,使用self.client执行get或者post或者其他方法的接口,具体使用方式基本与requests库的方法类似
#4.请求中的URl可以省略前端面域名,只保留接口部分即可
#5.re.success()是断言接口成功,括号里不要填写字符串会报错,断言使用前提必须要在self.client的方法中加上catch_response=True。
#re.failure的括号中必须有参数
from locust import HttpUser, task, TaskSet
import os
class Test1(TaskSet):
@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]
# min_wait = 100
# max_wait = 1000
if __name__ == '__main__':
os.system("locust -f ces.py --host=http://10.2.2.84:8087")
第一种方式编写完代码后通过命令行的方式执行,进入到py文件所在目录下,执行下列命令即可,不支持在pycharm中使用main方法使用,会报错。第二种方式支持pycharm中使用main方法调用开启,也支持使用命令行的形式执行启动,需要在新建的Test类下使用tasks=[ ] 形式,列表中放置@task标记方法所在的类名。
locust -f 【执行的py文件】--host =【接口域名】
#查看命令行参数使用:locust -h
三、WebUI形式启动加压
脚本服务启动后,可以通过浏览器输入IP:PORT的方式访问脚本服务,IP为脚本启动所在机器IP,端口默认为8089,打开界面如下。第一行输入的启动总用户数,第二行输入数据为每秒启动用户数,第三行是测试接口的域名。图中示例为每秒增加1个用户,最多增加用户数量为5个。
启动后弹出界面可以实时查看界面数据变化,文中的启动方式是不会自动停止的,需要手动停止。
分布式方式执行: