Locust框架

news2024/10/7 4:34:51

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.coloradmin.cn/o/1836456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

街道网格宣传稿件投稿我知道了好方法

作为街道信息宣传员,我的日常是将街道的每一项重要活动、每一份温暖故事编织成文字,传递给公众。这份工作既充满挑战又极具意义,但在最初,我却在这份看似简单的任务上屡屡受阻。那时,我的投稿方式单一且传统——依赖电子邮件,将稿件发送至各大媒体的投稿箱。我本以为,只要内容足…

Linux操作系统学习:day03

内容来自:Linux介绍 视频推荐:[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0317、创建删除目录创建目录删除目录 18、文件的拷贝19、mv 命令20、查看文件内容的相关命令21、给文件创建软连接或硬链接 day03 …

docker部署dm数据库

官方文档参考 官网地址:https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html 下载镜像地址 docker部署 1、加载镜像 docker load -i dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar使用docker images,查看镜像和镜像标签…

【RK3588/算能/Nvidia智能盒子】挑战「无电无网」部署AI算法,守护大亚湾荃美石化码头工地安全

“万顷碧波之上,一座千米钢栈桥如蛟龙出水,向大海蜿蜒。钢栈桥上的项目建设者正在加紧作业,为助推惠州大亚湾加快建设成为世界级绿色石化基地全力奋战。”这是不久前北京日报对大亚湾惠州港荃湾港区荃美石化码头工地的描述。 △ 图片来源于北…

【RK3588/算能/Nvidia智能盒子】AI“值守”,规范新能源汽车充电站停车、烟火及充电乱象

近年来,中国新能源汽车高速发展,产量连续8年位居全球第一。根据中国充电联盟数据,截至2023年6月,新能源汽车保有量1620万辆,全国充电基础设施累计数量为665.2万台,车桩比约2.5:1。 虽然新能源汽车与充电桩供…

java架构设计-COLA

参考:https://github.com/alibaba/COLA 架构 要素:组成架构的重要元素 结构:要素直接的关系 意义:定义良好的结构,治理应用复杂度,降低系统熵值,改善混乱状态 创建COLA应用: mvn …

代理商 SAAS 系统权限设计

代理商 SAAS 系统与垂直业务系统不一样,代理商可以不断发展下级,每一级有每一级的管理员。超级管理员可以开通下级代理机构,同时设置下级机构的管理员账号。每一级管理员可以管理本级机构对应的部门、岗位、员工,并进行授权管理。…

SSH 远程执行任务

SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进行一个小小的总结。 远程执行命令 如…

拦截器 之 用户登录判断

spring boot 拦截器的实现需要有两步: 拦截器 自定义一个拦截器 package com.example.demo.common;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.s…

【React】极客园--01.项目前置准备

项目搭建 基于CRA创建项目 CRA是一个底层基于webpack快速创建React项目的脚手架工具 # 使用npx创建项目 npx create-react-app react-jike# 进入到项 cd react-jike# 启动项目 npm start调整项目目录结构 -src-apis 项目接口函数-assets 项目资源文件&…

Flume基础教程

Apache Flume教程 资料来源:Apache Flume - Introduction (tutorialspoint.com) Flume是一个标准的、简单的、健壮的、灵活的、可扩展的工具,用于将从各种数据生产者(web服务器)中所产生的数据抽取到Hadoop中。在本教程中,我们将使用简单的…

内部类介绍

内部类(Inner Class)是在另一个类的内部定义的类。它可以访问外部类的所有成员,包括私有成员。内部类有两种主要形式:局部内部类(定义在方法内部)和成员内部类(定义在类的内部,但不在…

《Nest系列 - 2. Nest 代码生成器,让你告别base代码书写!!!》

紧接上文我们做一些核心梳理 核心梳理: /controllers目录:存放控制器文件,每个控制器对应一组路由和请求处理方法。控制器处理来自客户端的HTTP请求,并返回相应的响应。/modules目录:存放模块文件,每个模块…

第十一章:接口

接口 文章目录 接口一、简介1.1 接口是什么1.2 接口的作用1.3 接口的开发与调用1.4 接口的组成 二、RESTful API三、json-server四、接口测试工具五、接口的创建 一、简介 1.1 接口是什么 接口是前后端通信的桥梁 简单理解:一个接口就是 服务中的一个路由规则&am…

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配置…

产品经理用好AI,最关键的一个点

前言 AI大模型已经越来越强大了,我们要怎么才能把它变成生产力工具?根据最近的一个调研发现,即使是在产品经理这个群体里,能真正用好AI去激发生产力的人也只占6%,也就是说其实有94%的人都还不能很好的把生成式AI转化为…

个人博客测试用例设计

个人博客测试用例设计 个人博客测试用例 分别从功能、性能、安全、兼容及界面分别展开 个人博客测试用例

VST3音频插件技术介绍

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

文件系统崩溃一致性、方法、原理与局限

前言 先提几个问题:什么是文件系统崩溃一致性?为什么会出现文件系统崩溃一致性问题?有哪些方法可以解这个问题?它们各自又有哪些局限性? window系统电脑异常后会蓝屏、手机死机卡顿后我们会手动给它重启,大…

VirtualStudio配置QT开发环境

环境 VirtualStudio2022Qt5.12.10 安装msvc工具链(这一步不是必须的) 打开virtual studio,打开Virtual Studio Installer界面选择要安装的msvc版本,点击安装 安装VirtualStudio扩展 在线安装 打开virtual Studio,…