侧边栏壁纸
博主头像
欧德的半位面博主等级

欢迎迷途的旅人

  • 累计撰写 6 篇文章
  • 累计创建 4 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

Locust轻松入门-01-介绍篇

欧德之怒
2024-04-24 / 0 评论 / 3 点赞 / 101 阅读 / 6977 字

第一章:介绍篇

简介

  • Locust是一款基于Python的性能测试框架
  • 同时支持命令行及Web UI测试
  • 支持导入其他Python库,不受GUI限制,可扩展性不受限制
  • 官方文档地址
  • 案例代码仓库

特点

  • 对比常用的性能测试工具Jmeter,Locust的特点如下
指标项JmeterLocust
代码语言JavaPython
可视化程度/易用性
性能基于多线程基于协程,高并发下更节省内存
支持分布测试
日志查看丰富丰富
学习成本较高
二次开发灵活度

使用

安装

  • Locust当前是作为Python库使用的,因此建议使用pip安装
  • Python版本要求:3.8或者更新
pip3 install locust 
  • 验证安装的版本
locust -V
  • 安装预发布版本
pip3 install --pre locust

入门

  • Locust实质就是Python方法库的集合,因此使用Locust就是使用已编写的第三方库下的类和方法
  • Locust最主要的类是User类和TaskSet类
    • User类: 创建用于模拟请求的用户
    • TaskSet类:测试场景的集合,访问接口的相关代码和处理,如host、url、response等

案例1:基本测试场景

  • 假设有一个服务
    • 监听5000端口
    • 提供不同的路由访问,如/public
    • 访问成功时返回的messgae为success
  • 编写locust脚本访问服务
  • 执行locust脚本

部署服务端

  • 使用一个已构建的flask测试容器镜像快速部署服务端
  • 不同操作系统下安装docker,可参考【Docker-get docker】
  • 根据操作系统选择对应的docker-compose文件,下载后改名为docker-compose.yml
  • 此处以Linux操作系统为例, 将docker-compose.yml移动到/data/compose/flasktest
  • 执行命令启动容器
# 进入目录
cd /data/compose/flasktest
# 启动容器
docker compose up -d

locust-case-01-start-server.webp

编写代码

# 导入Locust类
from locust import FastHttpUser, task

class MockUser(FastHttpUser):
    # 设置默认的请求hots,仅在web界面此host生效
    host = "http://127.0.0.1:5000"
    # 使用@task装饰器表明此方法是一个需要执行的用例
    # Locust装饰器详细介绍请查看基础章节
    @task
    def test_public_route(self):
        self.client.get(url="/public")
  • 此案例中MockUser继承自FastHttpUser,用于模拟用户
  • host:设置默认请求的url host
    • 实际请求时url的host部分可以与默认host不一致
    • 类中的host变量,会在web界面启动时作为Host的值自动传入
    • 类中的host变量,在无界面启动时失效,需要手动指定--host或者-H传入
  • @task:被装饰的方法或者函数会被识别为一个测试用例场景
  • test_public_route:测试场景的代码
    • self.client:实例化User时创建的HttpSession实例。客户端支持cookie,因此在HTTP请求之间保持会话。
    • url:请求的url,一般组成如下
      • 请求协议:http或者https
      • 请求地址:域名或者ip
      • 请求端口:根据实际设置,不设置时http默认80,https默认443
      • 请求路由:如/public
    • 此处MockUser下已设置了默认的host,因此url的实际访问的完整地址为:http://127.0.0.1:5000/public

执行Locust

webui方式
  • 创建一个locust文件,如case_01_simple.py
  • 复制上面[[#代码]]步骤的内容,粘贴到case_01_simple.py
  • 使用locust命令启动
locust -f case_01_simple.py

locust-case-01-start-locust.webp

  • 此时通过当前服务器的IP+8089端口即可访问服务端
    locust-case-01-webui.webp
  • 点击中间的【START SWARM】按钮开始执行测试
    locust-case-01-statistics-white.webp
    当然也可以切换到暗色模式
    locust-case-01-statistics-black.webp
  • 在界面上,我们可以看到请求的方法、路径、失败率、响应时间、RPS等性能相关的常规参数
  • 当然其他的页面提供了更详细的测试相关信息
命令行方式
  • 创建一个locust文件,如case_01_simple.py
  • 复制上面[[#代码]]步骤的内容,粘贴到case_01_simple.py
  • 使用locust命令启动,并添加--headless参数,此时默认使用命令行启动,无web页面
locust -f case_01_simple.py --headless -t=1m -u=1 -r=1

locust-case-01-headless.webp

启动参数详解
  • 无论是web界面,还是命令行的方式,都存在以下几个核心参数,让我们看看这些参数的含义
参数简写解释备注
--host-H默认的基础url
--users-u并发用户数峰值整数类型
--spawn-rate-r每秒生成用户数支持浮点数
--run-time-t运行时间不设置时默认一直运行

查看日志

日志类型
日志配置
日志分析
3
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区