文章目录
python、Locust性能测试
Locust是什么?
Locust翻译成中文就是蝗虫的意思,就像蝗虫一样对系统发起成千上万的请求。以测试系统能否在高并发下正常运行 ,它是一款python的第三方开源的性能测试库,。完全基于poython开发,并采用了基于事件的处理机制。具有明显的特点
Locust特点
简单易学,可以快速开发性能测试脚本
开源免费
分布式执行,在多台机器上对系统发起持续请求
基于事件驱动 与其他常用工具不同的是 Locust采用的是协程的方式 可以达到更高数量级的并发
不支持监控 需要配合其它监控工具
Locust安装
Locust是python的第三方库 所以可以用pip下载
>>>pip install Locust
安装完成后 可以先压测一个接口 感受 一下
Locust性能测试脚本
这个脚本大致分为两个模块
- 任务集 需要继承TaskSet(就是把压测的接口,按照业务顺序编写)
- 用户类继承HttpLocust(配置用户请求相当于jmeter的线程组配置)
任务集TaskSet类
首页接口
首先 编写第一个继承自TaskSet类 先压测一个首页的接口
导入所需模块 由于headers每个接口都会用所以先定义成全局变量
TestIndex继承自TaskSet类 这个类里的方法就是要压测的接口了
getinex首页请求方法 client和requests的用法一样
三个参数分别是: 请求接口的路径 headers name参数是说明一下这个是什么接口
@task采用可选的weight参数,该参数可用于指定任务的执行率 如果一个任务是2 另一个4 那么4的执行量是2的两倍
#导入locust相关模块
from locust import HttpLocust,TaskSet,task
#定义一个任务类 继承TaskSet
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"
}
class TestIndex(TaskSet):
@task(2)
def getindex(self):
#client是Taskset类的方法 其实就相当于requests请求
# @task加一个注解 声明是一个任务
res= self.client.post("/index/info",headers=headers,name="打开首页")
然后TaskSet就算写完了 接下来就是用户类
用户类HttpLocust
-
host:是请求url的域名
-
Task_set:指向当前的用户类要执行那个任务
-
between 指定等待时间 参数 :
-
min_wait :最小等待时间
-
max_wait:最大等待时间
class WebSite(HttpLocust):
"""该类 用于配置用户请求"""
host = "http://127.0.0.1:5000"
task_set = TestIndex
wait_time = between(1,2)