首页 > 其他分享 >使用Locust进行接口性能测试:安装、命令参数解析与示例解读(一)

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

时间:2023-08-04 16:24:45浏览次数:37  
标签:web 示例 -- Locust 接口 master 测试 节点

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

一、Locust简介与安装

1. 使用pip安装Locust:

pip3 install locust

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

git clone https://github.com/locustio/locust
cd locust
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性能测试脚本示例:

# locustfile.pyfrom locust import HttpLocust, TaskSet, task
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
    max_wait = 5000

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

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

定义属性minx_wait  和 max_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 即可以尽情享受测试了。

图片

图片

总结

以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注我:公众号\博客\CSDN\B站:测试玩家勇哥;我会不定期地分享更多的精彩内容。感谢你的阅读和支持!


题外话,勇哥打算把新建的技术交流群,打造成一个活跃的高质量技术群。工作中遇到的技术问题,都可以在里面咨询大家,还有工作内推的机会。有兴趣的小伙伴,欢迎加我(记得备注是进群还是报名学习)

标签:web,示例,--,Locust,接口,master,测试,节点
From: https://www.cnblogs.com/Nephalem-262667641/p/17606162.html

相关文章

  • 使用Locust进行接口性能测试:Locust and TaskSet类详细分析(二)
    “Locust是一款开源的Python性能测试工具,它可以模拟大量并发用户对网站或者其他接口进行压力测试”一、Locust类详细说明在Locust中,Locust类是整个负载测试工具的核心。它用于创建并发用户场景,模拟用户行为。示例:fromlocustimportLocust,TaskSet,task#每一个Locust类,......
  • 接口测试之文件上传
    在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式传输给服务端,而服务端接受客户端传过来的二进制文件流以及文件名称等信......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台正确调阅实时录像接口的具体操作步骤
    LntonGBS之所以成为安防市场的主流视频平台,主要得益于其架构优势。首先,LntonGBS采用了云边端一体化的架构,将云计算、边缘计算和终端设备有机结合,实现了数据的高效传输和处理。这种架构不仅能够满足大规模视频数据的存储和分析需求,还能够实现实时监控和快速响应,提高了安防系统的整体......
  • 个人微信开发API接口
    个人微信开发API接口可拓展功能说明1、个人微信多账号管理、聚合聊天、多个微信号同时登陆、多个微信号集中在一个窗口进行聊天,实现一人多号同时沟通快速提升沟通效率,提升微信营销效率。2、客服灵活分配:客服主管可自由分配微信号给指定客服,方便及时处理问题,也可随时转接给公司商务......
  • Flask快速搭建接口-python库
    Flask是一个基于Python的轻量级Web框架,用于构建Web应用程序和RESTfulAPI。它被设计为简单、易用、灵活,并且具有良好的扩展性。Flask是一个微型框架,提供了一些基本功能,但也允许开发者根据需要选择并添加扩展。Flask构成路由(Routing):Flask使用路由来定义URL和对应......
  • Java 8特性,函数式接口编程
    一、函数式接口简介什么是函数式接口在接口中,有且只有一个抽象方法,那么这个接口就是函数式接口。函数式接口是Lambda表达式使用的前提条件。为什么使用函数式接口在Java中不支持将函数作为一个数据,也就不能将函数作为方法的参数进行传递。因此给函数外加一层接口的声明......
  • mybatis mapper接口实例化原理
       面试题来了:“我们都知道mybatis的mapper接口是没有实现类的,在使用的时候你知道它是如何实例化的吗?”懵逼的我:“知道啊,用的是jdk自带的动态代理;”;饥渴的面试官:“嗯,没错,继续说,它底层做了哪些事情?”;懵逼的我:“就是动态代理啊,还有啥?”得意的面试官:“这样子啊,那你回去等......
  • html滚动示例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>滚动测试</title><scriptsrc="https://code.jquery.com/jquery-3.7.0.min.js"crossorigin="anonymous"......
  • 【OpenHarmony内核编程接口】介绍定时器管理两种定时器以及案例演示
    前言本文介绍了内核编程接口之软定时器软定时器软定时器含义软件定时器(Timer),是基于系统时钟tick且由软件来模拟的定时器,当经过设定的tick计数值后会触发用户定义的回调函数ps1:定时器触发函数的执行,不是线程ps2:当定时器到期时,将执行回调函数以运行特定的代码ps3:定时精度......
  • 接口测试
    参考文章:https://blog.csdn.net/weixin_42360608/article/details/131482040什么是接口客户端和服务器数据进行交互的口,叫做接口,类似传声筒这玩意接口测试是什么接口测试是一种软件测试方法,用于验证不同软件模块之间的相互通信和协作是否正常,以及接口的输入和输出是否符合预期。在......