- 能用性能测试框架locust编写性能脚本
- 能使用locust实现分布式
Locust简介安装
简介
- Locust : 开源性能测试工具
- 特点 :
- 可在代码中定义用户行为
- 支持分布式及扩展
- 通过测试验证模拟战地游戏并发
- 简洁的用户界面,可跨平台使用
基本使用
- 步骤:
- 导包 : from locust import TaskSet,HttpLocust,task
- 创建任务集和任务
- 定义任务类,从TaskSet继承
- 从类内添加任务,@task任务的实现与定义方法
- 定义用户行为
- 绑定任务task_set=任务类类名
- 设置用户间最小延迟时间min_wait
- 设置用户间最大延迟时间max_wait
- 指定主机地址 host=
from locust import TaskSet,HttpUser,task
# 定义任务集和任务
class Task(TaskSet):
pass
# 定义用户的行为
class User(HttpUser):
pass
实现
from locust import TaskSet, HttpUser, task, between
# 定义任务集和任务
class Task(TaskSet):
# 访问首页
@task
def index(self):
result = self.client.get("/")
print("响应结果:", result.text)
# 定义用户的行为
class User(HttpUser):
# 绑定任务 - 使用 tasks 列表
tasks = [Task] # 注意这里是列表,且类名不需要括号,且task_set 属性已弃用
# 设置等待时间
min_wait = 1000
max_wait = 3000
# 指定主机地址
host = "https://tlias-stu.boxuegu.com/"


- 100 : 模拟的并发用户数
- 10 : 每秒产生的用户数
- Host : 待访问的域名,与代码中的一致



执行任务的比重
- 在@task后添加()写入设定的比重值即可
- 混合业务场景,500用户并发访问,登录80,注册20,搜索商品200,首页150,下单50
"""500用户并发访问,登录80,注册20,搜索商品200,首页150,下单50"""
from locust import TaskSet, HttpUser, task, between
# 定义任务集和任务
class Task(TaskSet):
# 登录
@task(8)
def login(self):
result = self.client.get("/?name=login")
print("响应结果:", result.text)
# 注册
@task(2)
def register(self):
result = self.client.get("/?name=register")
print("响应结果:", result.text)
# 搜索
@task(20)
def search(self):
result = self.client.get("/?name=search")
print("响应结果:", result.text)
# 首页
@task(15)
def page(self):
result = self.client.get("/?name=page")
print("响应结果:", result.text)
# 下单
@task(5)
def order(self):
result = self.client.get("/?name=order")
print("响应结果:", result.text)
# 定义用户的行为
class User(HttpUser):
# 绑定任务 - 使用 tasks 列表
tasks = [Task] # 注意这里是列表,且类名不需要括号
# 设置等待时间
min_wait = 1000
max_wait = 3000
# 指定主机地址
host = "https://www.baidu.com"

on_start
class Task(TaskSet):
def on_start(self):
print("任务开始了-----")
def on_stop(self):
print("任务结束了-----")
- 在每个方法执行前被自动调用一次,类似于setup_method()方法
on_stop
- 类似于teardown_method()方法
locust 分布式
- 实现 :
- locust 实现分布式,需要在脚本启动时给控制机,执行机指定不同的参数
- 要求控制机与执行机都位于同一个网段!!!
- 控制机 : --master
- 执行机 : --worker --master-host = 控制机IP
- 启动控制机 :

- 启动执行机(写入执行机的ip地址) :

由于控制机和执行机在同一台电脑上,所以可以使用127.0.0.1


使用没有web的locust
使用参数指定 ui界面中的东西
-f : 脚本文件名
–headless : 不以web页面形式运行
-u : 用户数
-r : 1s启动用户数
-t : 运行时间,秒s,分m,小时h,1h30min10s
–csv : 生成csv结果文件
locust -f ./py04_distribute.py --headless -u 500 -r 50 -t 20s --csv data
- 生成的文件

765

被折叠的 条评论
为什么被折叠?



