Locust相关
一、Locust 进行接口性能测试
1、特点:
基于Python的开源负载测试工具
支持多操作系统
支持二次开发
能够模拟更多用户
基于协程(微线程)的并发
2、Locust 与 JMeter 对比
3、locust 安装
前提:已经安装pycharm、Python 3.5 以上版本
在线安装:pip install locustio==0.12.2
离线安装
Pycharm 安装
二、locust 测试脚本实现步骤
1、定义任务:发送 HTTP 接口请求
2、定义任务集:定义一个用户行为,包含发送多个 HTTP 请求(即具体任务)
3、定义 locust 类:locust 类代表用户,用户会对应具体的用户行为(即任务集)
三、案例:
定义任务
locust 里发送请求是基于 requests 实现的,请求方法、参数、响应对象和 requesrts 使用方式一样。
''' 定义任务 ''' #登录 def login(l): l.client.post("/login",data={"username":"admin","password":"123456"}) #首页 def index(l): l.client.get("/index") #获取用户信息 def profile(l): l.client.get("/profile") #退出 def logout(l): l.client.post("logout")
定义任务集(tasks里面,表示每 发送 3 个index,发送一个 1 profile ,比例为 3:1)
from locust import TaskSet ''' 定义任务 ''' #登录 def login(l): l.client.post("/login",data={"username":"admin","password":"123456"}) #首页 def index(l): l.client.get("/index") #获取用户信息 def profile(l): l.client.get("/profile") #退出 def logout(l): l.client.post("logout") #定义任务集 class UserBehavier(TaskSet): tasks = {index:3,profile:1} #类属性,index 和 profile 为任务名,且发送比例为 3:1 def on_start(self): #相当于setUpClass login(self) def on_stop(self): #相当于tearDownClass logout(self)
定义一个 locust 任务类,这个类代表用户
from locust import TaskSet from locust import HttpLocust ''' 定义任务 ''' #登录 def login(l): l.client.post("/login",data={"username":"admin","password":"123456"}) #首页 def index(l): l.client.get("/index") #获取用户信息 def profile(l): l.client.get("/profile") #退出 def logout(l): l.client.post("logout") #定义任务集 class UserBehavier(TaskSet): tasks = {index:3,profile:1} #类属性,index 和 profile 为任务名,且发送比例为 3:1 def on_start(self): #相当于setUpClass login(self) def on_stop(self): #相当于tearDownClass logout(self) #定义locust用户类 class WebsiteUser(HttpLocust): task_set = UserBehavier min_wait = 500 max_wait = 1000 host = "http://bms-test.itheima.net/bms" #这是主域名,拼接上面任务的请求的后缀,即组成一个完整的HTTP请求域名 weight = 10 #该用户的权重,当有多个用户时,根据总数分配权重。
三、locust 运行脚本
运行命令:
locust -f locust_files/my_locust_file.py --host=http://example.com
注意:-f 指定的是脚本的 py 文件名。而 --host 指定的是需要查看locuct的网址,当运行该脚本时,在终端运行后,去浏览器登录该网址,会发现locust界面
四、locust 执行脚本的日志介绍
1、报告介绍:
2、各行参数介绍