Locust框架

Locust

简介:是一个Python的第三方库,专门用来进行性能并发测试

Locust特点:

  • 基于Python的开源负载测试工具
  • 支持多种操作系统
  • 支持二次开发
  • 能够模拟更多用户
  • 基于协程(微线程)的并发

Jmeter与Locust对比

image-20240618091553206

Locust安装

前提:已安装Pycharm、python3.5以上的版本

  • 在线安装:pip install locustio==0.12.2
  • 离线安装
  • Pycharm安装

Locust测试脚本实现步骤

1、定义任务 发送HTTP接口请求(类似于JMeter中的HTTP取样器)

2、定义任务集 定义一个用户行为,包含多个HTTP请求(即具体的任务)(类似于JMeter中的事务控制器)

3、Locust 类代表用户,用户会对应具体的用户行为(即任务集)(类似于JMeter中的线程组)

定义任务

locust里发送请求是基于requests实现的,请求方法、参数、响应对象和requests使用方式一样。

image-20240618220707372

# 定义任务
# 登录请求
def login(l):
    l.client.post("/bms/login",data={"username":"admin","password":"123456"})
# 首页
def index(l):
    l.client.get("/bms/index")
# 获取用户信息
def profile(l):
    l.client.get("/bms/profile")
# 退出
def logout(l):
    l.client.post("/bms/logout")

定义任务集(用户行为)

模拟用户行为,将多个任务(HTTP请求)按照指定的比例组合在一起进行发送

image-20240618221209942

image-20240618221219108

from locust import TaskSet
#定义任务集
# 定义任务集
class UserBehavior(TaskSet):
tasks = {index:1,profile:3}
def on_start(self):
login(self)
def on_stop(self):
logout(self)

定义Locust类

用户类,通过用户来执行定义好的任务集

image-20240618221348837

#定义用户类
class UserWebsite(HttpLocust):
task_set = UserBehaiver
min_wait = 1000
max_wait = 1500
host = "http://bms-test.itheima.net/bms"
weight = 10

运行Locust:

运行命令:

locust -f locust_files/my_locust_file.py

参数介绍:

  • -f :用来指定locust文件所在路径

启动成功:

image-20240618222248779

性能测试执行的界面:

image-20240618222316431

错误:

image-20240618222351569

解决错误:

1、重新安装gevent包的版本
pip install gevent==1.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2、重新执行运行locust脚本
locust -f locust_p\locust1.py

启动成功显示为:

image-20240618222520218

启动压测执行:

Locust执行测试时系统指标的监控

image-20240618222557161

image-20240618222607402

其他的资源监控界面:

  • charts:记录吞吐量QPS、响应时间、并发数,按照时间的统计情况
  • Failures:性能测试脚本在执行失败后的记录(断言失败)
  • Exceptions:脚本出现异常
  • Download Data:提供下载前面各个部分的性能指标数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/721085.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7.华为交换机端口配置链路聚合Eth-trunk

目的:两台华为交换机端口配置链路聚合 LSW1配置 [Huawei]interface Eth-Trunk 1 [Huawei-Eth-Trunk1]q [Huawei]int g0/0/1 [Huawei-GigabitEthernet0/0/1]eth-trunk 1 [Huawei-GigabitEthernet0/0/1]int g0/0/2 [Huawei-GigabitEthernet0/0/2]eth-trunk 1LSW2配置…

最新Prompt预设词分享,DALL-E3文生图+文档分析

使用指南 直接复制使用 可以前往已经添加好Prompt预设的AI系统测试使用(可自定义添加使用) 支持GPTs SparkAi SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。支持GPT-4o…

数据库面试题(持续更新中)

目录 1.oracle 与 mysql 的区别 2.三范式 3.事务的特性(ACID) 4.事务隔离级别 5.脏读、不可重复读、幻读 非重复度和幻像读的区别 6.explain查看sql的执行计划 7.查询SQL语句的执行过程 8.更新sql语句的执行过程 9.锁 加锁机制分为 兼容性上分…

Swift开发——索引器扩展

扩展用于向已存在的类型(例如,类、结构体、枚举和协议等)中添加新的功能,扩展甚至可以向系统类型(包括无法查阅代码的类型)中添加新的功能,但是扩展不能覆盖原类型中已有的方法,扩展也不能向类中添加新的存储属性。 01、索引器扩展 扩展可为类、结构体等类型添加索引器。程序段…

英码科技携手昇腾打造“三位一体”智慧化工解决方案,使能化工产业管理更高效、智能

我国是世界公认的化工大国。然而,大部分化工园区的日常管理方式较为传统,各园区、厂区的门禁、视频、停车场等子系统犹如一个个独立的“岛屿”,每个“岛屿”需要耗费大量人力及时间成本进行巡检、记录、上报,且不能做到全域、全时…

表达式的格式化

表达式:一条具有明确结果的代码语句 在字符串前面加上前缀f,表示这是一个格式化字符串,可以在字符串中直接引用变量,并使用{}来表示这些变量的位置。例如: name "Alice" age 30 print(f"My name is …

茶艺师服务师傅小程序APP源码(APP+小程序+公众号+H5)

🍵茶艺师服务小程序:品味生活的茶艺新体验🌱 🌿一、引言:茶艺师服务小程序,让生活更有味 在繁忙的生活中,品一杯香茗,感受茶文化的韵味,是许多人向往的休闲方式。然而&…

C++之std::type_identity

目录 1.简介 2.C20的std::type_identity 3.使用 type_identity 3.1.阻止参数推导 3.1.1.模板参数推导过程中的隐式类型转换 3.1.2.强制显式实例化 3.2.阻止推断指引 3.3.类型保持 3.4.满足一些稀奇古怪的语法 4.示例 5.总结 1.简介 std::type_identity 是 C17 引入的…

【长春理工大学主办 | EI检索稳定 | SPIE出版 | 过往4届均检索 】第五届计算机视觉和数据挖掘国际学术会议(ICCVDM 2024)

第五届计算机视觉和数据挖掘国际学术会议(ICCVDM 2024) 2024 5th International Conference on Computer Vision and Data Mining 会议简介 第五届计算机视觉与数据挖掘国际学术会议(ICCVDM 2024)将于2024年7月19-21日在中国长春…

【HarmonyOS NEXT】鸿蒙 如何在包含web组件的页面 让默认焦点有效

页面包含web组件Button组件等,把页面的默认焦点放到Button组件上,不起效果。 因为web组件默认会在组件加载完成后获取焦点; 可以在web的网页加载完成时onPageEnd回调中,将设置默认获焦的组件通过focusControl.requestFocus方法主…

【递归、搜索与回溯】DFS解决FloodFill算法

一、经验总结 之前我们已经研究过了BFS解决FloodFill算法:【优选算法】BFS解决FloodFill算法-CSDN博客 DFS只是遍历顺序发生了变化,其他需要注意的点大差不差。 二、相关编程题 2.1 图像渲染 题目链接 733. 图像渲染 - 力扣(LeetCode&am…

2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024)

2024年先进机械电子、电气工程与自动化国际学术会议(ICAMEEA 2024) 2024 International Conference on Advanced Mechatronic, Electrical Engineering and Automation 会议地点:杭州,中国 网址:www.icameea.com 邮箱: icameeasub-conf.c…

excel宏处理魔法代码,实现按月份统计销售额和按产品统计销售额

目录 前言第一步:打开文件第二步:选中左侧任意一个sheet双击第三步:粘贴 魔法代码第四步:点击菜单栏 运行>运行子程序和用户窗口第五步:切换回文件,我们就可以看到已经生成了月份销售额统计和产品销售额…

72-UDP协议工作原理及实战

#ifndef UDPCOMM_H #define UDPCOMM_H#include <QMainWindow> #include <QUdpSocket> // 用于发送和接收UDP数据报 #include <QtNetwork>QT_BEGIN_NAMESPACE namespace Ui { class udpComm; } QT_END_NAMESPACEclass udpComm : public QMainWindow {Q_OBJECT…

数字孪生引领智慧校园建设新篇章

一、引言 在数字化浪潮的推动下&#xff0c;教育行业正经历着一场深刻的变革。智慧校园作为现代教育的新风向&#xff0c;通过整合先进的信息技术&#xff0c;正在逐步改变传统的教学、管理与服务模式。其中&#xff0c;数字孪生技术以其独特的优势&#xff0c;为智慧校园的建…

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…

VST3音频插件技术介绍

一.概述 1.VST3介绍 VST3&#xff08;Virtual Studio Technology 3&#xff09;是一种音频插件格式&#xff0c;由Steinberg公司开发&#xff0c;用于在数字音频工作站&#xff08;DAW&#xff09;中使用。VST3插件可以是模拟合成器、鼓机、混响器、压缩器等多种类型的音频处理…

AI在医学中神奇应用

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年11月7日&#xff0c;OpenAI首届开发者大会被称为“科技界的春晚”&#xff0c;吸引了全球广大…

零基础入门学用Arduino 第四部分(一)

重要的内容写在前面&#xff1a; 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后&#xff0c;整体感觉是很好的&#xff0c;如果有条件的可以先学习一些相关课程&#xff0c;学起来会更加轻松&#xff0c;相关课程有数字电路…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调…