Locust框架从0到1入门
Locust介绍
Locust是使用Python语言编写实现的开源性能测试工具,可以用来测试Web应用程序、API、数据库等各种应用程序的性能,使用起来简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。中文意为:蝗虫,蝗虫过境,寸草不生。
它的主要思想:模拟一群用户将访问你的网站。每个用户的行为由你编写的python代码定义,同时可以从
Web界面中实时观察到用户的行为。
Lucust的主要特点包括:
- 简单易用:Lucust采用Python编写,开发者可以通过Python代码进行测试,并且可以使用Web界面和命令行界面轻松地管理测试和监控结果。
- 分布式架构:Lucust支持分布式测试,可以同时运行多个进程和多个机器的测试。分布式测试还可以提高测试效率和准确性。
- 实时监控:Lucust提供实时监控和实时统计功能,可以实时查看测试结果和对测试数据进行分析。
- 可扩展性:Lucust可以通过编写自定义测试脚本、自定义模拟用户行为,以及支持多种格式的测试数据等方式进行扩展。
总的来说,Lucust是一个功能强大且易于使用的性能测试框架,适用于各种规模的应用程序测试,并且可以通过扩展和定制满足个性化的测试需求。
几款主流性能测试框架对比
性能测试通常需要有压力发生器,系统资源监控器,结果采集器,结果分析器等组件。

与jmeter类似,locust没有系统资源监控器

下面是locust与jemter,loadrunner的功能对比

locust框架搭建
locust的官网:https://www.locust.io/,项目地址:https://github.com/locustio/locust
- 在本地有python开发环境的前提下,使用 pip install locust 命令安装。安装时注意本地的C++环境,如提示需要C++2014以上,如遇到错误,根据提示安装C++环境即可。
- 编写性能测试脚本,并启动服务
2.1 导入所需的库和函数,如:
from locust import HttpUser, task, between
其中,HttpUser为基础用户类,task用于定义任务,between用于指定用户执行任务的时间间隔。
2.2 定义用户类:
class MyUser(HttpUser):wait_time = between(1, 3)@taskdef my_task(self):self.client.get("/path")
其中,wait_time指定用户执行任务之间的等待间隔,@task为任务定义装饰器,my_task为任务函数名称,self.client.get(“/path”)为具体的任务执行代码。
2.3. 运行Locust:
locust -f my_script.py
其中,-f参数指定要执行的脚本文件。
2.4. 在浏览器中访问Locust Web界面,如:
http://localhost:8089/
在界面中可以指定用户数、用户增长速率、任务权重等参数,并实时查看测试结果。

locust实例脚本
如下为一个简单实例,其中on_start为对locust内置方法的重写,另外还有on_stop方法。
from locust import HttpUser, TaskSet, taskclass WebsiteTasks(TaskSet):def on_start(self): # 进行初始化的工作,每个Locust用户开始做的第一件事payload = {"username": "XXXX","password": "123456",}header = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",}self.client.post("/login", data=payload,headers=header) # self.client属性使用Python request库的所有方法,调用和使用方法和requests完全一致;@task(2) # 通过@task()装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被虚拟用户执行的概率越高,默认为1def index(self):self.client.get("/")@task(1)def about(self):self.client.get("/about/")class WebsiteUser(HttpUser):host = "https://github.com/" # 被测系统的host,在终端中启动locust时没有指定--host参数时才会用到tasks = [WebsiteTasks] # TaskSet类,该类定义用户任务信息,必填。这里就是WebsiteTasks类名,因为该类继承TaskSet;min_wait = 3000 # 每个用户执行两个任务间隔时间的上下限(毫秒),具体数值在上下限中随机取值,若不指定默认间隔时间固定为1秒max_wait = 10000
locust常用命令
1、脚本调试命令行:
locust -f locustfile.py --headless -u 1 -r 1 –t 30s
2、在Terminal以如下命令启动locust,通常情况下不需额外指定其他参数:
locust -f locustfile.py
3、Locust默认采用8089端口启动web,如果要使用其它端口,就可以使用如下参数进行指定:
locust -f locustfile.py –web-port 8089
4、–host用来指定测试主机地址
locust -f locustfile.py --host=http://example.com
相关文章:
Locust框架从0到1入门
Locust介绍 Locust是使用Python语言编写实现的开源性能测试工具,可以用来测试Web应用程序、API、数据库等各种应用程序的性能,使用起来简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。中文意为&a…...
C++:整数(short ,int,long,long long)表示范围
整形 C用short、int、long 、long long来表示整数的整形,同一整形也分为有符号(signed)和无符号(unsigned)两种。数据长度与操作系统和编译器的位数有关,其能够表示的范围也有所不同。接下来本文将用代码的…...
会声会影2023旗舰版新功能介绍,Corel VideoStudio Ultimate2023以及电脑系统配置要求
会声会影2023中文旗舰版功能非常强大的视频编辑软件,非常专业的使用效果,会声会影2023中文版可以针对剪辑电影进行使用,非常强大的色彩校正方式,无论什么光线下进行拍摄,都可以通过后期进行调整,并且里面超…...
软件测试用例篇(5)
测试是否运行代码去划分? 1)静态测试: 不运行代码,检查代码的风格,格式是否符合公司的标准规范,检查代码的逻辑结构是否满足需求要实现的功能 看代码,不运行代码,通过静态分析代码的语法,编写规…...
三个修饰符
三个修饰符三个修饰符一、abstract1.1 修饰类1.2 修饰方法二、final2.1 修饰类2.2 修饰方法2.3 修饰变量2.3.1 修饰属性2.3.2 修饰局部变量2.3.3 修饰方法的参数2.3.4 常量三、static关键字3.1 修饰属性3.2 修饰方法3.3 修饰代码块3.4 继承时的执行顺序三个修饰符 一、abstrac…...
JVM调优面试题——参数命令专题
文章目录1、JVM参数有哪些?1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些?2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…...
单例模式(设计模式详解)
单例模式 描述 单例模式是一种创建型模式,它的目的是确保一个类只有一个实例,并提供全局访问点。这个实例可以被多个客户端共享,从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {priv…...
设计一份关于文化遗产视频的调查问卷
参考文献:[1]任洁. 重庆美食类短视频传播策略研究[D].重庆交通大学,2021.DOI:10.27671/d.cnki.gcjtc.2021.000699.📰1 设计背景现已制作一些关于文化遗产的时长4-5分钟的视频,需要面向在校大学生收集他们对视频的看法从而分析视频的传播效果&…...
Linux内核移植
内核移植半导体厂商会从linux内核官网下载某个版本,将其移植到自己的CPU上,测试成功后就会将其开放给该半导体的厂商的CPU开发者,开发者下载其提供的linux内核,然后将其移植到自己的 产品上。1、NXP官方开发板Linux内核编译测试编…...
忆享科技优化入职培训加强人效管理全面迎接新挑战
-优化入职培训-忆享科技加强人效管理入职培训课程 ✦ KPI系统上线 ✦ 砥砺前行前言许多企业随着自身的不断发展,对于各类人才引进需求也越来越迫切,一批批新员工的加入,公司规模逐渐扩大,给公司带来了全新的血液。但在大量新员工加…...
Spring——注解开发依赖注入和管理第三方bean
自动装配(引用类型) 环境准备: 文件结构如下图所示,Dao层的实现类里面有一个save方法,Service层里面的实现类有一个BookDao的声明和一个set方法,同时也有一个save方法,配置类的扫描范围如图所示 在当前的一个测试类当…...
shell可能考你但是不常用的基础($篇)
前言 当你面试的时候,可能要说的架构什么都准备好了,也说的七七八八,结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡,一个没答上来道心被破,后面就更容易懵逼了 通常造成这个问题的原因是写…...
项目管理必备:如何绘制一份优秀的甘特图?
本文一共分为两部分—— 分享60Excel甘特图模板,简单省事儿分享两种甘特图制作教程,高效快捷 第一部分——60甘特图模板 分享一些项目管理甘特图的模板,省事儿!高效!简单! Excel甘特图表模板自取…...
【点云学习】多时相激光雷达点云
多时相雷达数据(multi-tempral LiDAR data) 1 一种多时相激光雷达数据建筑物变化检测方法-汪承义(2013) 背景:空间分辨率的提高引入了“类内可分性”增加与“类间可分性”降低;遮挡与阴影的存在使问题变得…...
使用QT C++编写一个随机生成网络ip地址的程序
根据网络搜索结果,使用QT C编写一个随机生成网络ip地址的程序的示例代码可能如下: cpp #include <QCoreApplication> #include <QRandomGenerator> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(a…...
Web前端学习:章三 -- JavaScript预热(三)
六九:函数的变量提升 函数的变量提升没有var高,var是最高的。 先提var,再提函数 解析: 1、4行打印之前没有定义变量,预解析触发变量提升 2、先提var,再提函数。所以先把var提升到最上面,然后提…...
java实用小技巧:判断list是否有重复项
在项目中经常会遇到这样的场景,就是一个list,根据某种规则,我要去判断里面是不是有重复的项。 难度不高,但有点烦,所以专门开一篇文章来记录一下,争取弄一个相对简洁的写法。 先看一个简单的例子…...
SQL优化常用招数(上)
文章目录 一、查询SQL尽量不要使用select *,而是具体字段二、避免在where子句中使用 or 来连接条件三、尽量使用数值替代字符串类型四、使用varchar代替char五、技术延伸,char与varchar2的区别?六、where中使用默认值代替null七、避免在where子句中使用!=或<>操作符八…...
C++并发之探索编程三
文章目录1. 等待事件或等待其他条件1.1 凭借条件变量等待条件成立1.1.1 std::condition_variable1.1.2 std::condition_variable_any1.1.3 std::condition_variable和std::condition_variable_any之间的区别上个章节我们讨论了如何对共享数据的一个保护,通过std::lo…...
某智能驾驶企业:CACTER云网关为O365系统护航
01 客户背景 某智能驾驶企业是一家国际性的高科技创新型企业,在智能驾驶领域处于全球领先地位,专注于为广大客户提供个性化的智能驾驶解决方案,共建美好智能新时代。 使用产品:CACTER邮件安全云网关 02 痛点难点问题 根据Corema…...
告别虚拟机卡顿:在Proxmox VE 7.0上丝滑安装中兴新支点NewStartOS 4.3.8社区版
告别虚拟机卡顿:在Proxmox VE 7.0上丝滑安装中兴新支点NewStartOS 4.3.8社区版 虚拟化技术已成为现代IT基础设施的核心组件,而Proxmox VE作为开源的虚拟化管理平台,凭借其稳定性和灵活性赢得了众多技术团队的青睐。在众多虚拟化应用场景中&am…...
开源图书管理系统OpenClaw-Book:基于Vue与Spring Boot的轻量级解决方案
1. 项目概述:一个开源图书管理系统的诞生最近在整理个人藏书和电子资料时,我遇到了一个很多朋友都有的痛点:书越来越多,但想找的时候却总是找不到。市面上的图书管理软件要么功能臃肿、收费昂贵,要么就是数据不开放&am…...
PLINK实战:如何用--het和--hardy参数快速筛查异常样本与SNP位点
PLINK实战:基因组数据质控中的杂合度与哈迪-温伯格平衡分析技巧 拿到测序数据的第一天,实验室新来的博士生盯着满屏的PLINK报表面露难色——那些F值、P值究竟在说什么?为什么隔壁组的文章用0.2过滤杂合度,而合作方坚持要用0.1&…...
Loop:三步快速配置,让你的Mac窗口管理效率提升300%
Loop:三步快速配置,让你的Mac窗口管理效率提升300% 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否经常在多个应用窗口间来回切换,感觉自己像个杂技演员&#…...
交互式CLI工具开发指南:从原理到实战构建Node.js命令行应用
1. 项目概述:一个能“对话”的命令行工具如果你经常和命令行打交道,尤其是需要处理一些重复性、多步骤的配置或部署任务,你肯定有过这样的体验:打开一个脚本,面对一堆需要手动输入的参数,或者在不同的命令之…...
GaussDB 操作时间【玩转PB级数仓GaussDB(DWS)】
前言在使用 GaussDB DWS 进行数仓相关操作时,我们经常会涉及到对时间的操作,本文主要来讲解下有关时间操作的定义及函数格式化字符串模式描述HH一天的小时数(01-12)HH12一天的小时数(01-12)HH24一天的小时数(00-23)MI分钟(00-59)ss秒(00-59)MS毫秒(000-9…...
【NotebookLM播客化实战指南】:3步将静态文档转化为高转化率AI播客,92%用户留存提升实测数据曝光
更多请点击: https://intelliparadigm.com 第一章:NotebookLM文档播客化功能详解 NotebookLM 是 Google 推出的基于用户上传文档进行 AI 增强理解与交互的实验性工具,其“文档播客化”(Document Podcasting)功能允许用…...
Azure OpenAI代理层:无缝兼容官方API,平滑迁移与统一管理
1. 项目概述:一个为Azure OpenAI服务量身打造的代理层如果你正在使用微软Azure平台上的OpenAI服务,比如GPT-4、GPT-3.5-Turbo或者Embeddings模型,并且遇到了API格式不兼容、部署环境限制或者想统一管理多个终端的麻烦,那么diemus/…...
DeepSeek Jaeger性能压测实录:单日240亿Span写入下,存储层崩溃前的4.7秒黄金抢救窗口
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Jaeger链路追踪 DeepSeek Jaeger 是 DeepSeek 系列可观测性工具中专为分布式系统设计的轻量级链路追踪实现,深度兼容 OpenTracing 与 OpenTelemetry 协议,并针对大模型…...
Discord服务器日活破5万后ChatGPT机器人崩了?百万级消息队列+状态分片架构设计(附GitHub星标1.2k的开源模板)
更多请点击: https://intelliparadigm.com 第一章:Discord服务器日活破5万后ChatGPT机器人崩了? 当 Discord 社区日活跃用户突破 5 万时,一个基于 OpenAI API 的 ChatGPT 机器人在高峰时段突然出现 98% 的请求超时与 429…...
