Locust
简介:是一个Python的第三方库,专门用来进行性能并发测试
Locust特点:
- 基于Python的开源负载测试工具
- 支持多种操作系统
- 支持二次开发
- 能够模拟更多用户
- 基于协程(微线程)的并发
Jmeter与Locust对比
Locust安装
前提:已安装Pycharm、python3.5以上的版本
- 在线安装:pip install locustio==0.12.2
- 离线安装
- Pycharm安装
Locust测试脚本实现步骤
1、定义任务 发送HTTP接口请求(类似于JMeter中的HTTP取样器)
2、定义任务集 定义一个用户行为,包含多个HTTP请求(即具体的任务)(类似于JMeter中的事务控制器)
3、Locust 类代表用户,用户会对应具体的用户行为(即任务集)(类似于JMeter中的线程组)
定义任务
locust里发送请求是基于requests实现的,请求方法、参数、响应对象和requests使用方式一样。
# 定义任务
# 登录请求
def login(l):
l.client.post("/bms/login",data={"username":"admin","password":"123456"})
# 首页
def index(l):
l.client.get("/bms/index")
# 获取用户信息
def profile(l):
l.client.get("/bms/profile")
# 退出
def logout(l):
l.client.post("/bms/logout")
定义任务集(用户行为):
模拟用户行为,将多个任务(HTTP请求)按照指定的比例组合在一起进行发送
from locust import TaskSet
#定义任务集
# 定义任务集
class UserBehavior(TaskSet):
tasks = {index:1,profile:3}
def on_start(self):
login(self)
def on_stop(self):
logout(self)
定义Locust类:
用户类,通过用户来执行定义好的任务集
#定义用户类
class UserWebsite(HttpLocust):
task_set = UserBehaiver
min_wait = 1000
max_wait = 1500
host = "http://bms-test.itheima.net/bms"
weight = 10
运行Locust:
运行命令:
locust -f locust_files/my_locust_file.py
参数介绍:
- -f :用来指定locust文件所在路径
启动成功:
性能测试执行的界面:
错误:
解决错误:
1、重新安装gevent包的版本
pip install gevent==1.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2、重新执行运行locust脚本
locust -f locust_p\locust1.py
启动成功显示为:
启动压测执行:
Locust执行测试时系统指标的监控
其他的资源监控界面:
- charts:记录吞吐量QPS、响应时间、并发数,按照时间的统计情况
- Failures:性能测试脚本在执行失败后的记录(断言失败)
- Exceptions:脚本出现异常
- Download Data:提供下载前面各个部分的性能指标数据