“ 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
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036
二、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 即可以尽情享受测试了。
下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
软件测试面试小程序
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
资料获取方式 :