• 使用Locust进行接口性能测试:安装、命令参数解析与示例解读


    Locust是一款开源的Python性能测试工具,它可以模拟大量并发用户对网站或者其他接口进行压力测试**”**

    一、Locust简介与安装

    1. 使用pip安装Locust:

    pip3 install locust
    

    2. 通过GitHub克隆项目并安装(推荐Python 3):

    1. git clone https://github.com/locustio/locust
    2. cd locust
    3. python setup.py install

    3. 安装pyzmq(可选,用于分布式模式):

    pip install pyzmq
    

    验证Locust是否安装成功:

    locust --help
    

    二、Locust命令参数详解

    Locust的命令参数可以在启动Locust时使用,以配置测试的各种参数。以下是一些常用的命令参数:

    • -h, --help: 查看帮助信息。
    • -H HOST, --host=HOST: 指定被测试的主机URL,格式为http://example.com
    • --web-host=WEB_HOST: 指定Locust Web页面绑定的主机地址,默认为空字符串表示绑定到所有接口。
    • -P PORT, --port=PORT, --web-port=PORT: 指定Locust Web页面绑定的端口号,默认为8089。
    • -f LOCUSTFILE, --locustfile=LOCUSTFILE: 指定运行Locust性能测试的Python文件,默认为locustfile.py
    • --csv=CSVFILEBASE, --csv-base-name=CSVFILEBASE: 以CSV格式存储当前请求测试数据。
    • --master: 设置Locust以分布式模式运行,当前节点为master节点。
    • --slave: 设置Locust以分布式模式运行,当前节点为slave节点。
    • --master-host=MASTER_HOST: 分布式模式运行,设置master节点的主机或IP地址,只在与--slave节点一起运行时使用,默认为127.0.0.1
    • --master-port=MASTER_PORT: 分布式模式运行,设置master节点的端口号,只在与--slave节点一起运行时使用,默认为5557。注意,slave节点也将连接到这个端口+1上的master节点。
    • --master-bind-host=MASTER_BIND_HOST: 分布式模式运行,指定Locust master绑定的主机接口,只在与--master节点一起运行时使用,默认为*(绑定到所有可用接口)。
    • --master-bind-port=MASTER_BIND_PORT: 分布式模式运行,指定Locust master绑定的端口号,只在与--master节点一起运行时使用,默认为5557。注意,Locust还会使用这个端口+1,因此默认情况下master节点将绑定到5557和5558端口。
    • --no-web: 禁用Locust Web页面,直接运行测试。需要同时指定-c-r参数。
    • -c NUM_CLIENTS, --clients=NUM_CLIENTS: 指定并发用户数,仅在--no-web模式下生效。
    • -r HATCH_RATE, --hatch-rate=HATCH_RATE: 指定每秒启动的用户数,仅在--no-web模式下生效。
    • -n NUM_REQUESTS, --num-request=NUM_REQUESTS: 指定总请求数量,仅在--no-web模式下生效。
    • -t RUN_TIME, --run-time=RUN_TIME: 设置运行时间,例如:300s(300秒)、20m(20分钟)、3h(3小时)、1h30m(1小时30分钟)。仅在--no-web模式下生效。
    • -L LOGLEVEL, --loglevel=LOGLEVEL: 选择日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL)。默认为INFO。
    • --logfile=LOGFILE: 指定日志文件路径。如果未设置,则日志输出将在控制台。
    • --print-stats: 在控制台打印统计信息。
    • --only-summary: 仅打印摘要统计信息。
    • --no-reset-stats: 在测试完成后不重置统计数据。
    • -l, --list: 显示可用的Locust类列表,并退出。
    • --show-task-ratio: 打印Locust测试类的任务执行比例。
    • --show-task-ratio-json: 以JSON格式打印Locust测试类的任务执行比例。
    • -V, --version: 查看当前Locust工具的版本号。

    三、编写Locust性能测试脚本

    Locust两个主要的类:继承自HttpLocust的模拟用户类和继承自TaskSet的测试任务类。

    简单的Locust性能测试脚本示例:

    1. # locustfile.pyfrom locust import HttpLocust, TaskSet, task
    2. class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test", "password": "123456" }) @task(2) def index(self): self.client.get("/") @task(1) def about(self): self.client.get("/about/")class WebsiteUser(HttpLocust): task_set = WebsiteTasks host = "http://example.com" min_wait = 1000
    3. max_wait = 5000

    创建了WebsiteUser类作为模拟用户,并指定了WebsiteTasks作为测试任务类。

    定义了index()about()方法来模拟用户访问网站的不同页面。

    定义属性minx_waitmax_wait 用于控制每个用户执行任务之间得等待时间参数,在我们的示例中也就是表示,每个用户在执行两个任务之间将等待1~5秒,避免所有用户同时发起请求,与实际业务更准确。

    • min_wait:表示用户执行两个任务之间的最小等待时间,单位为毫秒。
    • max_wait:表示用户执行两个任务之间的最大等待时间,单位为毫秒。

    定义 on_start 方法,在每个用户开始执行任务之前要执行的操作,类似unittest中得setup方法,可以在这里进行登录。

    四、运行Locust测试

    命令行运行Locust测试:

    locust -f locustfile.py --web-host=127.0.0.1 --web-port=8089
    

    -f指定Locust测试脚本路径,--web-host--web-port指定Locust Web页面的绑定主机和端口。

    然后浏览器输入:localhost:8089 即可以尽情享受测试了。

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    在这里插入图片描述

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

  • 相关阅读:
    YOLOv5-理论部分
    go类型断言类型转换
    iVX低代码平台系列详解 -- 概述篇(二)
    后端的前段基础
    高级语言讲义2010软专(仅高级语言部分)
    SQL中的LAG函数与LEAD函数用法
    美创科技入选IDC中国等保合规市场报告推荐厂商
    FPGA/HDL 开发的 10 条规则
    如何获取量化交易历史复权数据?
    基于双级阈值及过零率的语音激活检测(VAD)
  • 原文地址:https://blog.csdn.net/YLF123456789000/article/details/133989835