news 2026/5/10 20:31:36

Python性能测试框架Locust实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python性能测试框架Locust实战教程
01 认识Locust

Locust是一个比较容易上手的分布式用户负载测试工具。它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理多少个并发用户,Locust 在英文中是 蝗虫 的意思:作者的想法是在测试期间,放一大群 蝗虫 攻击您的网站。当然事先是可以用 Locust 定义每个蝗虫(或测试用户)的行为,并且通过 Web UI 实时监视围攻过程。

locust运行原理

Locust 的运行原理是完全基于事件运行的,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调(比如Nodejs就是属于回调,Locust 不使用这种的逻辑)。相反,它通过 gevent 使用轻量级进程。测试您站点的每个蝗虫实际上都在其自己的进程中运行

Locust的特点

1、用Python编写测试方案 不需要在UI界面上点击,只需要正常编写代码即可,灵活性比较强

2、分布式&可扩展 Locust 支持分布在多台计算机上的运行负载测试(可以多台机器并行开搞)。

3、统计结果基于Web界面 Locust 有一个简单的用户界面,可实时显示相关的测试详细信息,并且统计结果界面是基于网页的,而网页是天生跨平台的,所以 Locust 是跨平台且易于扩展的

4、可以测试任何网页/应用/系统 只需用 python 编写想要测试的方案,然后放”蝗虫”去怼需要测试的项目就可以了,非常简单!

02 测试工具哪个好

LoadRunner

是非常有名的商业性能测试工具,功能非常强大。使用也比较复杂,但收费贼贵

Jmeter

同样是非常有名的开源性能测试工具,功能也很完善。可以当做接口测试工具来测试接口,但同时它也是一个标准的性能测试工具

Locust

功能上虽然不如LoadRunner及Jmeter丰富,但其也有不少优点。Locust 完全基本 Python 编程语言并且 HTTP 请求完全基于 Requests 库。

LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。

03 环境安装

Python环境配置

(1)首先去Python官网下载Python3.6+版本解释器

(2)安装解释器并配置环境变量(将python的根目录以及Scripts路径配置到环境变量Path下面)

(3)打开cmd窗口,分别输入python、pip命令并回车,如果没有报错,则说明Python环境配置成功

Locust环境配置

(1)打开cmd窗口,输入pip install locustio==0.14.6 并回车,此时系统会自动下载locust库以及部分依赖库

PS:locust 目前有2个大版本,0和1的版本,两个版本之间语法差异比较大,安装1*版本,直接pip install locust 即可

(2)安装成功后验证:在cmd窗口中,输入python,进入python开发环境,然后输入import locust,如果没有报错,则说明locust安装成功

04 如何使用

Locust类

HttpLocust类 继承了Locust类,表示将要生成的每一个虚拟的HTTP用户,用来发送请求到进行负载测试的系统。

task_set属性 该 task_set 属性指向定义的用户行为的类

host属性 host属性是要加载的域名(URL 前缀,例如http://xxxxxx)

wait_time属性 用于发送Http请求时,虚拟用户需要等待的时间,等待时间是一个区间范围。单位为毫秒,等待时间在min_wait和max_wait之间随机选择

TaskSequence 类

TaskSequence 类

TaskSequence 类是 TaskSet,但其任务将按顺序执行。

@task装饰器

用于标识测试任务,并且可以通过task装饰器设置权重用于执行任务的执行率

@seq_task装饰器

用于指定接口的执行顺序。可以把@task装饰器和@seq_task装饰器一起组合使用

初始化方法

1、setup 和 teardown方法 setup 和 teardown 都是只能运行一次的方法。在任务开始运行之前运行setup,而在所有任务完成并且蝗虫退出后运行 teardown;这使您能够在任务开始运行之前做一些准备工作(比如创建数据库,或者打印日志 等等),并在蝗虫退出之前进行清理。

2、on_start 和 on_stop 方法 每个虚拟用户执行操作时运行on_start方法,退出时执行on_stop方法

3、初始化方法的执行顺序 setup > on_start > on_stop > teardown

常用3种启动方式

直接启动

  1. locust -f stock_center.py

  2. (stock_center.py为执行脚本,可在编译器中直接运行该脚本)

无web页面启动

locust -f stock_center.py --no-web -c 200 -r 20 -t 1m (–no-web 代表不需要启动UI页面 -c 代表需要并发的用户数 -r 代表每秒并发的用户数 -t 代表需要运行的时间)

分布式启动

locust -f stock_center.py --master # 指定当前机器为master主机 locust -f stock_center.py --slave --master-host=10.xxx.xxx.xxx # 指定当前机器为从机并指向对应master主机

启动页面

Number of total users simulate: 设置需要并发的总人数

Hatch rate(users spawned/second): 每秒启动的虚拟用户数

Start swarming: 执行locust脚本

Type: 请求类型,即接口的请求方法

Name: 接口请求路径

Requests: 当前已完成的请求数量

Fails: 当前失败的数量

Median: 响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒

Average: 平均响应时间,单位为毫秒

Min: 最小响应时间,单位为毫秒

Max: 最大响应时间,单位为毫秒

Average Size: 平均请求的数据量, 单位为字节

Current RPS: 每秒能处理的请求数目

各模块说明

New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;

Statistics:类似于jmeter中Listen的聚合报告;

Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、 不同时间的虚拟用户数;

Failures:失败请求的展示界面;

Exceptions:异常请求的展示界面;

Download Data:测试数据下载模块, 提供四种类型的CSV格式的下载, 分别是:Statistics、responsetime、failures、exceptions;

05 Locust的总结

局限:

locust的局限性在于:目前其本身对测试过程的监控和测试结果展示,不如jmeter全面和详细,需要进行二次开发才能满足需求越来越复杂的性能测试需要。

优势:

纯脚本形式,并且HTTP请求完全基于Requests库。用过Requests的都知道,这个库非常简洁易用,但功能十分强大

另外一点就是并发机制了。Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。避免了系统级资源调度,由此大幅提高了性能。正常情况下,单台普通配置的测试机可以生产数千并发压力,这是LoadRunner和Jmeter都无法实现的。

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 7:27:02

从传感器到生理机制:近地面无人机植被定量遥感与生理参数反演——涵盖辐射定标、几何处理、辐射传输模型与关键参数反演

在过去的十余年间,无人机遥感技术以其高时空分辨率、灵活观测方式和低成本的优势,彻底革新了植被监测与研究的方法体系。它有效弥补了卫星遥感在观测频率、云层干扰和细节信息方面的不足,使得从单株叶片到区域冠层的多尺度、精细化植被参数提…

作者头像 李华
网站建设 2026/5/2 12:12:20

百度百科:什么是新消费品牌电商代运营公司?

在消费升级与数字化浪潮推动下,新消费品牌凭借精准的用户定位、创新的产品理念和多元化的营销模式迅速崛起,成为电商市场的重要增长极。然而,多数新消费品牌面临电商运营经验匮乏、专业团队搭建成本高、平台资源整合能力不足等痛点。新消费品…

作者头像 李华
网站建设 2026/5/8 7:03:14

介电强度试验仪解决材料在高压环境下的绝缘性能评估问题

介电强度试验仪主要解决材料在高压环境下的绝缘性能评估问题,具体包括以下几个方面:1. ‌评估材料的绝缘性能‌核心功能‌:通过施加直流或交流电压,模拟高压环境,测试材料在电场作用下的击穿电压,从而评估其…

作者头像 李华
网站建设 2026/5/4 10:43:30

虾皮店如何做爆款商品呢

在竞争激烈的虾皮电商平台上,如何让自己的商品脱颖而出成为爆款?这是每个卖家都在思考的问题。打造爆款不仅是销量和利润的保证,更是店铺流量和品牌认知度的关键驱动力。本文将为您解析虾皮爆款商品的打造流程,从选品策略到推广技…

作者头像 李华
网站建设 2026/5/9 3:14:39

[Windows] 局域网共享精灵v2025.11.10绿色版

[Windows] 局域网共享精灵v2025.11.10绿色版 链接:https://pan.xunlei.com/s/VOiI2bKifFbU2d-SbBTjWrfPA1?pwdpsbj# 局域网共享精灵是一款Windows环境下助力于局域网环境文件共享和打印机共享,帮助您快捷高效的在局域网内实现文件共享和打印机共享的操作&#xf…

作者头像 李华
网站建设 2026/5/10 12:01:06

Java Agent 技术全解析:从基础框架到落地实践

Java Agent 技术全解析:从基础框架到落地实践 在 Java 开发领域,“无侵入式增强”是很多场景(监控、排查、适配)的核心需求。而 Java Agent 作为 JVM 层面的字节码增强技术,恰好能满足这一需求——无需修改业务代码&am…

作者头像 李华