网站首页 > 文章精选 正文
locust简介
locust是一个基于python的开源的性能测试框架,一个易于使用的基于事件的分布式用户负载工具。
优点是并发高,即一个locust节点也可以在一个进程中支持数千并发用户,资源占用小,不使用回调,通过gevent使用轻量级过程。缺点是报告简陋,如果想得到详细的报告内容则需要使用人员进行定制的二次开发,不支持资源监控。
Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。gevent是第三方库,通过greenlet实现协程,其基本思想是:
当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。
注意:使用gevent,可以获得极高的并发性能,但gevent只能在Unix/Linux下运行,在Windows下不保证正常安装和运行。
locust与jmeter3的区别
工具 | 区别 |
jmeter | 需要在UI界面上通过选择组件来“编写”脚本,模拟的负载是线程绑定的,意味着模拟的每个用户,都需要一个单独的线程。单台负载机可模拟的负载数有限 |
locust | 通过编写简单易读的代码完成测试脚本,基于事件,同样配置下,单台负载机可模拟的负载数远超jmeter |
安装locust
前提:已经搭建安装好python环境,查看是否安装命令:python --version
1.1 安装locust,直接pip安装,打开终端输入:pip install locust
1.2 安装完毕后,验证是否安装成功的命令:locust --version
操作步骤
第一步:以下创建一个简单的demo程序进行测试,此处我将该程序命名为:locust file.py,并且放在D盘根目录下。
# -*- coding: utf-8 -*-
# @Time:2022/4/30 17:45
# @Author: xiaodong
from locust import HttpUser,task
import logging
class point(HttpUser):
@task
def login(self):
logging.captureWarnings(True)
palyed2 = {"email": "org589", "password": "Abc12345"}
# https请求添加verify
response=self.client.post(f'/api/auth/login/',json=palyed2,verify=False)
# 断言
if response==200:
response.success()
else:
response.failure('Failed!')
# 在5-15秒区间内随机取值
wait_time = between(5, 15)
相关参数介绍如下:
①@task:是添加一个task的最简单的方式,相当于jmeter中的http sampler。如果使用的是@task(n),n代表的是weight,用于指定task执行的比率,也即权重。
②wait_time:User类中包含一个可选项wait_time,用于设置在每个task运行之后的等待时间,如果不设置wait_time,会马上执行下一个task。
更多详细参数可查阅:https://blog.csdn.net/Telfort/article/details/114686675
第二步:直接进入文件所在路径,以下有3种方式进入该路径:
(1)windows打开cmd窗口,命令为:cd D:\locust file.py
(2)linux打开terminal
(3)pycharm等编码工具打开terminal,也即控制台
第三步:在terminal中输入以下命令,启动Locust服务。
(1)打开GUI界面
locust -f locustfile.py
locust -f locustfile.py --host=https://xxx.com
--host:被测试的url
通过浏览器访问localhost:8089,即可通过简易的web界面输入一些目标测试参数,并执行测试,实时展示相关测试结果。
执行测试完毕后,结果展示如下:
(2)无GUI界面
locust -f locustfile.py --headless -u 100 -r 10 -t 10s --csv=result --html=report.html
--headless 表示不启动界面
-u [数量] 设置虚拟用户数
-r [时间] 每秒钟启动虚拟用户数
-t [时间] 设置测试多长时间
----秒,数字后面加上 s ,例如 10s
----分钟,数字后面加上 m,例如 1m
----小时,数字后面加上 h,例如 1h
--csv:保存csv报告,默认会保存4个,如下图
--html:保存HTML格式报告
如果感觉不错的话麻烦点个关注,跪谢,欢迎关注我们的公众号:橙好测试开发!
猜你喜欢
- 2024-12-23 python网络爬虫:批量爬取图片 python批量爬取图片并保存
- 2024-12-23 10w qps缓存数据库——Redis redis缓存数据量多大开始性能下降
- 2024-12-23 Python File(文件) 常用场景 python中file.write
- 2024-12-23 「JS 逆向百例」某网站加速乐 Cookie 混淆逆向详解
- 2024-12-23 「JS 逆向百例」猿人学web比赛第五题:js 混淆 - 乱码增强,详细剖析
- 2024-12-23 Python 操作mysql实现事务处理 python+操作mysql实现事务处理功能
- 2024-12-23 python 大量乱序文件如何合并成有序的
- 2024-12-23 如何使用 PyScript 在 Web 浏览器上轻松运行
- 2024-12-23 Selenium4.0+Python3系列(四) - 常见元素操作(含鼠标键盘事件)
- 2024-12-23 Selenium4+Python3系列(六) - 强制等待、隐式等待、显式等待
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)