一、Locust框架
1.1.特点
1).基于Python的开源负载测试工具
2).支持多种操作系统
3).支持二次开发
4).能够模拟更多用户
5).基于协程(微线程)的并发
1.2.Locust与JMeter对比
1.3.Locust安装
pip install locustio==0.12.2
1.4.Locust测试脚本实现步骤
1).定义任务
发送HTTP接口请求。(类似于JMeter中的HTTP取样器)
2).定义任务集
定义一个用户行为,包含多个HTTP请求(即具体的任务)。(JMeter中的事务控制器)
3).定义Locust类
Locust类代表用户,用户会对应具体的用户行为(即任务集)。(JMeter中的线程组)
1.5.编写Locust测试脚本
1).定义任务(使用request库)
1.1).Locust里发送请求是基于requests实现的,请求方法、参数、响应对象和requests使用方式一样
1.2).代码
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.get("/logout")
2).定义任务集(用户行为)
2.1).定义一个用户行为类,要继承TaskSet类,表示一个任务集
2.2).tasks:用米添加任务,它是一个dict类型,key表示任务的方法名,value表示挑选执行的权重,数值越大执行频率越高
2.3).on_start:前置方法(前置任务),在所有任务之前调用
2.4).on_stop:后置方法(后置任务),当任务集停止时调用
2.5).代码
from locust import TaskSet
class UserBehavier(TaskSet):
tasks = {index:3,profile:1}
def on_start(self):
login(self)
def on_stop(self):
logout(self)
3).定义locust类
3.1).自定义的Locust类继承了HttpLocust类,这个类代表用户
3.2).task_set:该属性指向TaskSet类,定义用户的行为
3.3).min_wait:用户执行任务之间等待时间的下界,默认值:1000ms
3.4).max_wait:用户执行任务之间等待时间的上界,默认值:1000ms
3.5).host:被测应用的网址,例如:http://bms-test.itheima.net
3.6).weight:用户被选中的概率,权重越大,被选中的机会就越大。默认值:10
3.7).代码
from locust import HttpLocust
class WebsiteUser(HttpLocust):
task_set = UserBehavier
min_wait = 2000
max_wait = 3000
host = "http://bms-test.itheima.net/bms"
weight = 10
4).运行脚本
4.1).运行命令:locust-f locust_files/my_locust_file.py--host=http://example.com
4.2).参数介绍
1.-f:用来指定locust文件所在路径
2.--host:用来指定测试应用的网址