性能测试工具-locust

Python性能测试工具Locust入门 2、Jmeter 同样是非常有名的开源性能测试工具,功能也很完善,它可以作为接口测试工具的使用。分布式模式运行, 设置 master 节点的端口号,只在与 –slave 节点一起运行时使用,默认为:5557。使用也比较复杂,目前大多介绍性能测试的书籍都以该工具为基础,甚至有些书整本都在介绍LoadRunner 的使用。分布式模式运行,设置 master 节点的主机或 IP 地址,只在与 –slave 节点一起运行时使用,默认为:127.0.0.1.指定运行 Locust Web 页面的主机,默认为空 “。 阅读详情

简介

Locust是基于python语言的性能测试框架。

Locust支持分布式部署,单实例并发线程数可达1000,界面简约。

locust基于事件。

Locust的缺点

1、无可视化脚本编写功能,需要基于Python语言和locust框架进行脚本编写,纯代码编写。

2、需要安装Python环境。

环境搭建

Python安装和pip安装

Locust安装

数码内网安装:pip install locust。可以使用国内源安装

Locust使用

脚本编写

示例1

代码
from locust import HttpUser, task, between
from common.common import logger_print
import yaml
import time


class MyTest(HttpUser):
    wait_time = between(1, 1)
    with open('../config/config.yaml', 'r', encoding='utf-8') as f:
        config = yaml.safe_load(f)
        f.close()
    logger_file = config["logger"]["logger_file"]
    logger_level = config["logger"]["logger_level"]
    logger = logger_print(logger_file, logger_level)
    @task
    def test_demo(self):
        url = "***"
        headers = {'Content-Type': 'application/json;charset-utf-8'}
        json_data = {"facility": "qqg***"}
        start_time = time.time()
        with self.client.post(url=url, headers=headers, json=json_data, catch_response=True) as response:
            run_time = time.time() - start_time
            self.logger.info(response.text)
            self.logger.info("本次请求耗时: %.2f ms" % (run_time * 1000))
            try:
                if response.json()["status"] == 1 and response.json()["message"] == "查询**统计成功!":
                    response.success()
                    self.logger.info("请求消息体返回正确")
                else:
                    response.failure("返回消息不正确, %s" % response.text)
                    self.logger.error("返回消息不正确, %s" % response.text)
            except Exception as e:
                response.failure("返回消息不正确, %s, 报错: %s" % (response.text, e))
                self.logger.error("返回消息不正确, %s, 报错: %s" % (response.text, e))
说明

1、locust脚本需要编写测试类并继承HttpUser;

2、测试用例需要使用task进行标注;

3、需要设置单个请求发起的间隔时间,wait_time = between(1, 1),between()方法入参最小等待时长和最大等待时长;

4、断言添加需要使用with self.client.post(url=url, headers=headers, json=json_data, catch_response=True) as response: ;

5、断言支持自定义,并使用response.success()和response.failure()进行标注成功或失败。

示例2

代码
from locust import HttpUser, TaskSet, task
from common.common import logger_print
import yaml
import time


class MyTestCases(TaskSet):
    with open('config/config.yaml', 'r', encoding='utf-8') as f:
        config = yaml.safe_load(f)
        f.close()
    logger_file = config["logger"]["logger_file"]
    logger_level = config["logger"]["logger_level"]
    logger = logger_print(logger_file, logger_level)
    @task
    def test_demo(self):
        url = "***"
        headers = {'Content-Type': 'application/json;charset-utf-8'}
        json_data = {"facility": "***"}
        start_time = time.time()
        with self.client.post(url=url, headers=headers, json=json_data, catch_response=True) as response:
            run_time = time.time() - start_time
            self.logger.info(response.text)
            self.logger.info("本次请求耗时: %.2f ms" % (run_time * 1000))
            try:
                if response.json()["status"] == 1 and response.json()["message"] == "查询**统计成功!":
                    response.success()
                    self.logger.info("请求消息体返回正确")
                else:
                    response.failure("返回消息不正确, %s" % response.text)
                    self.logger.error("返回消息不正确, %s" % response.text)
            except Exception as e:
                response.failure("返回消息不正确, %s, 报错: %s" % (response.text, e))
                self.logger.error("返回消息不正确, %s, 报错: %s" % (response.text, e))

class WebSitUser(HttpUser):
    tasks = [MyTestCases]
    min_wait = 1000
    max_wait = 1000
说明

1、测试用例类继承TaskSet,执行类继承HttpUser,在执行类中初始化tasks, min_wait,max_wait参数,tasks需要为list,存放用例类,min_wait,max_wait单位为ms。

2、通过name定义用例或接口名称,如:with self.client.post(url=url, headers=headers, json=json_data, catch_response=True, name="目标查询") as response: 

 3、可通过@task(1)、@task(5)定义测试类每轮执行过程中执行次数

Locust启动

单机启动

locust -f locust_test_demo.py

分布式启动:

1、master节点启动:locust -f locust_test_demo.py --master

2、worker节点启动:locust -f locust_test_demo.py --worker --master-host=10.3.171.23(10.3.171.23为Master节点IP)

Locust使用

1、打开浏览器,输入地址:节点ip:8089

2、输入参数: Number of users表示用户总数,即并发数

Spawn rate 每秒增加用户数

Host 被测试接口集host,可被用于接口地址参数化,如:

Host也可随意填写,但请求url需要在脚本中写全,可用户不固定ip和端口的测试,配置到配置文件中

3、统计页面

4、报告

后台日志:

前端html报告

Locust (一)性能测试为什么要用 locust ?为什么 locust 的教程用不了? 一、 阅读详情

相关推荐

locust性能测试工具及httprunner框架集成locust进行性能测试指导

LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。另外学习新的工具或测试方法,也可以帮助我们更加深刻的了解性能测试。locust框架主要有TaskSet、task、HttpLocust,分别对应接口用例,用户行为修饰器,性能测试配置。简单demo如下:@task(1)datas = {}

weixin_46535008的博客 1847

locust性能python代码基本用法

官方文档:Locust说明文档 一、认识Locust 1、定义 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。 2、特点 ①、不需要编写笨重的UI或者臃肿的XML代码,基于协程而不是回调,脚本编写简单易读; ②、有一个基于we简洁的HTML+JS的UI用户界...

梧桐凰的博客 1430

性能测试工具Locust安装及使用教程

性能测试工具Locust安装及使用教程

技术引领业务创新 1万+

6000字Locust入门详解

(一). 性能测试工具主流性能测试工具对比认识Locust(二) locust 基本用法1.安装locust2.编写用例3. 启动测试4. locust概念(三) locust 自定义压测协议 websocket什么是websocket协议 ?选择websocket 客户端创建WebSocketUser(四). locust 核心组件核心组件: 2类 ,4个重要的属性:(五). locust 扩展增强1. 录制用例2. 数据关联3. 参数化4. 检查点5. 思考时间6. 权重7. 集合点8. 分布式9. 资

米不开朗基罗的博客 6702

locust 分布式大全

locust分布式

qq_36076898的博客 1333

Windows7 64位系统PL2303驱动无法安装问题解决

问题描述:电脑安装的是Win7 64位的旗舰版,USB to RS232这种线很简单,对于笔记本如果要用串口,就不能少了它了。USB to RS232转换芯片种类繁多,常见的有ch340,0108,PL2303,FT232等,这里面FT232的应该价格是相对比较贵的,因为FTDI的芯片本身比较贵。由于买了一根PL2303芯片的USB to RS232转换线,于是插上后发现驱动无法安装,又是在设备管

suxiang198的博客 5809

深度解刨性能测试工具Locust

在当前UserBehavior()行为下只有一个baidu()任务,所以,这里的权重设置为几,并无影响。如果你常关注我的博客,大概会注意到我有三、四年没有写过关于性能测试的文章了,其实,今年也没更新几篇像样的博客,反而是我最忙的一年,原因是在写一本关于接口自动化的书。这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!load_test.py 为测试脚本,https://www.baidu.com 为测试的网站。

NHB66666666的博客 805

数字IC后端时序违例修复:setup/hold冲突与时钟树优化实战

时序收敛是数字IC后端设计中最关键的环节之一,直接影响芯片能否在目标频率下稳定工作。建立时间与保持时间的本质是寄存器对数据稳定性的物理约束,而实际工程中,setup违例和hold违例往往此消彼长,冲突的根源在于数据路径与时钟路径的延迟匹配。时钟树综合(CTS)作为连接逻辑与物理的关键步骤,其skew、insertion delay和transition的优化直接决定了时序修复的成败。通过useful skew技术、合理的单元替换和路径结构调整,可以系统性地解决setup/hold冲突,实现时序收敛。本文结合

weixin_28292761的博客 220

揭秘Locust性能测试工具

希望本文能帮助你更好地利用Locust进行高效的性能测试,提升软件质量,优化系统性能,从而提高用户满意度和企业竞争力。

chengxuyuznguoke的博客 812

超详细!新手必看STM32-DMA配置与实验(串口使用DMA发送数据)

DMA就是:直接存储器访问。DMA传输数据从一个地址空间复制到另一个地址空间,提供在外设和存储器或者存储器和存储器之间的高速数据传输。

qq_1033275663的博客 2万+

MEG预处理-Brainstorm

Brainstorm下载和安装 去Brainstorm官网进行下载:打开网页后,点击左侧Download;在跳出来的界面中进行简单的注册,注册完成后可以进行下载 解压后得到“brainstorm3”的文件夹,里面包含Brainstorm工具包的所有文件,把这个文件夹放在某个路径如"E:\matlab_tools\brainstorm3"即可 同样在某个路径建立空的文件夹命名为:brainstorm_db用于工具包运行过程中自动存储生成的文件,所以这个文件中生成的数据不要手动移动删除 在Matlab中,把.

AxeChen的博客 6119

基于Python的性能测试工具Locust

Locust是一款基于Python的开源性能测试工具,支持分布式压测和协程并发机制,相比JMeter资源占用更少,能支持更高并发。本文全面介绍了Locust的安装配置、核心概念、命令参数及使用实践。Locust通过Python脚本定义用户行为,提供Web界面监控测试进度,支持HTTP/HTTPS等协议测试,具有灵活扩展性。与JMeter相比,Locust更适合快速测试和基本性能分析,而JMeter则支持更丰富的协议和报告格式。文章详细对比了两者差异,并提供了Locust的安装指南、命令参数说明及实际测试场景

Johnny's Lab 876

从毫米波到计算机视觉:智能座舱监控系统的多模态技术融合

本文探讨了智能座舱监控系统中多模态技术融合的创新应用,涵盖毫米波雷达、红外传感与计算机视觉的协同架构。通过传感器时空对齐、低光照算法突破及隐私保护设计,系统在DMS、OMS等场景实现99.7%的检测准确率,同时优化成本至$45以内,为汽车智能化提供关键技术支撑。

d6e7f8的博客 902

性能测试工具【LoadRunner vs Locust】

性能测试就是通过模拟高并发访问完成的,这个模拟并不是真的有多个用户一起访问系统,而是通过工具完成的。性能测试工具模拟高并发有3种模式,分别是多进程、多线程和协程。进程、线程和协程的关系如图3-1所示。图3-1 进程、线程和协程的关系进程是为了更好地利用CPU资源而定义的,用于分配系统资源、标识任务。进程是系统资源分配的最小单元,主要占用地址空间、全局变量、文件描述、硬件等资源。操作系统以多进程的方式完成多个任务,这样可以充分地利用系统资源。

hlsxjh的博客 544

微信小程序通过MQTT协议实现智能家居远程控制——基于阿里云物联网平台

本文详细介绍了如何利用微信小程序与MQTT协议,结合阿里云物联网平台,构建一套完整的智能家居远程控制系统。文章从平台配置、MQTT协议核心概念、小程序开发实战到单片机端对接,提供了全链路实践指南,并重点阐述了通过规则引擎实现消息路由与设备绑定的关键步骤,帮助开发者快速实现安全、稳定的自定义智能家居解决方案。

1206

从零到一:Gromacs伞形采样的实战避坑指南

本文详细介绍了Gromacs伞形采样技术的实战应用与避坑指南,涵盖核心原理、环境准备、参数设置、数据分析及性能优化等关键环节。特别针对蛋白质-配体结合自由能计算等典型应用场景,提供了弹簧常数设置、采样窗口间距等实用参数建议,帮助研究人员高效完成分子动力学模拟。

weixin_29243279的博客 512

性能测试工具Locust

性能测试工具Locust 2016-11-19 23:03 by 虫师, 2467 阅读, 7 评论, 收藏, 编辑 An open source load testing tool. 一个开源性能测试工具。 define user behaviour with python code, and swarm your system with millions of simult

TheSamaritan-City 647

学Simulink——基于Simulink的Buck-Boost变换器双闭环PI+抗饱和设计建模示例

本文详细介绍了基于Simulink的非反相Buck-Boost变换器双闭环控制设计方法。针对Buck-Boost变换器特有的右半平面零点(RHPZ)和控制挑战,提出了电压-电流双闭环PI控制架构,并集成抗积分饱和机制。通过Simulink建模,实现了主电路、电流内环PI、电压外环PI、PWM及占空比限幅等模块的搭建,验证了在输入电压跌落(20V→10V)和负载突变(2A→4A)等场景下的稳定性能。仿真结果表明,输出电压波动小于0.35V,恢复时间快于1ms,电感电流有效限幅。文章还讨论了工程实践要点和扩展方

xiaoheshang_123的博客 318

Loadrunner和JMeter、Locust三款性能测试工具全面对比

付费可以开启他的所有功能。他的社区版可以体验基本的性能测试流程。它能够预测系统行为和性能,通过模拟上千万用户实施并发、负载及实时性能监测的方式来确认和查找问题,使用。

NHB222222的博客 1195

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python技术栈性能测试工具Locust入门

Locust是一款Python技术栈的的。Locust直译为蝗虫,寓意着它能产生蝗虫般成千上万的并发用户:Locust并不小众,从它的Star数量就可见一斑:截止文章写作时,一共Star。Locust生态良好,它已在多家外企(包括)投入使用:如此看来,Locust是非常值得学习和掌握的一款工具。Python的魔力在于化繁为简,

hlsxjh的博客 1069

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

性能测试工具-Locust的使用方法

Locust介绍 Locust是一款使用Python开发的开源性能测试工具,支持分布式,可在多台主机上对系统持续发送请求,与Jmeter、LoadRunner的等压测工具使用线程的方式模拟用户请求不同,Locust是使用协程的方式模拟用户请求,协程的上下文切换是由自己控制,当一个协程执行完成后会主动让出,让另一个协程开始执行,切换是在用户态完成的,而线程切换是受系统控制,是在用户态与内核态之间切换,所以协程上下文切换的代价远比线程切换的代价小的多,因此Locust可以达到更高数量级的并发,更多介绍请查看官方

小白典的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

性能测试工具 Locust

二.Locust from locust import HttpLocast,TaskSet,task UserBehavior/WebsiteTasks 继承 TaskSet,是实现用户行为的类。 测试 Web 项目,WebsiteUser 继承 HttpLocust,但 HttpLocust 继承于 Locust。WebsiteUser 继承 HttpLocust,是模拟用户...

qq_42105144的博客 1064

python locust_Python 性能测试工具Locust

介绍An open source load testing tool.一个开源性能测试工具。define user behaviour with python code, and swarm your system with millions of simultaneous users.使用Python代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。Locust安装1、安装Pytho...

weixin_39814454的博客 92

性能测试工具-Locust

性能测试工具选择

MRJJ_9的博客 2540

python性能测试工具_性能测试工具Locust

An open source load testing tool.一个开源性能测试工具。define user behaviour with python code, and swarm your system with millions of simultaneous users.使用Python代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。如果你常关注我的博客,大概会注意到我有...

weixin_39879674的博客 154
上一篇: matplotlib实现二维坐标系绘图
caodingzheng
博客等级 码龄7年 18粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值