Locust框架从0到1入门
创始人
2024-05-31 13:27:27
0

Locust介绍

Locust是使用Python语言编写实现的开源性能测试工具,可以用来测试Web应用程序、API、数据库等各种应用程序的性能,使用起来简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。中文意为:蝗虫,蝗虫过境,寸草不生。
它的主要思想:模拟一群用户将访问你的网站。每个用户的行为由你编写的python代码定义,同时可以从
Web界面中实时观察到用户的行为。
Lucust的主要特点包括:

  1. 简单易用:Lucust采用Python编写,开发者可以通过Python代码进行测试,并且可以使用Web界面和命令行界面轻松地管理测试和监控结果。
  2. 分布式架构:Lucust支持分布式测试,可以同时运行多个进程和多个机器的测试。分布式测试还可以提高测试效率和准确性。
  3. 实时监控:Lucust提供实时监控和实时统计功能,可以实时查看测试结果和对测试数据进行分析。
  4. 可扩展性:Lucust可以通过编写自定义测试脚本、自定义模拟用户行为,以及支持多种格式的测试数据等方式进行扩展。
    总的来说,Lucust是一个功能强大且易于使用的性能测试框架,适用于各种规模的应用程序测试,并且可以通过扩展和定制满足个性化的测试需求。

几款主流性能测试框架对比

性能测试通常需要有压力发生器,系统资源监控器,结果采集器,结果分析器等组件。
在这里插入图片描述
与jmeter类似,locust没有系统资源监控器
在这里插入图片描述
下面是locust与jemter,loadrunner的功能对比
在这里插入图片描述

locust框架搭建

locust的官网:https://www.locust.io/,项目地址:https://github.com/locustio/locust

  1. 在本地有python开发环境的前提下,使用 pip install locust 命令安装。安装时注意本地的C++环境,如提示需要C++2014以上,如遇到错误,根据提示安装C++环境即可。
  2. 编写性能测试脚本,并启动服务

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

相关内容

热门资讯

中国船舶吸收合并中国重工获上交... 中国船舶(600150)7月4日晚间发布公告称,公司发行股份吸收合并中国重工(维权)(601989)...
天箭科技:预计上半年净亏损59... 转自:财联社【天箭科技:预计上半年净亏损595.56万元-1182.23万元 同比盈转亏】财联社7月...
因欺骗投保人、被保险人或者受益... 7月4日,国家金融监督管理总局河南金融监管局发布行政处罚信息显示,中国太平洋人寿保险股份有限公司郑州...
银行股爆发!高股息持续发力,价... 7月4日,在银行带领下,高股息风格个股表现强势,价值ETF(510030)开盘后震荡走高,收盘涨1....
把物业费花在最关心的项目上,北... 7月4日,北京市住房和城乡建设委员会正式修订发布新版《住宅物业服务标准》(以下简称《标准》),将于2...
强势突破!百亿银行ETF(51... 今日银行板块全天领涨两市,收盘大涨1.84%,42只银行股集体收涨,10余只齐刷历史新高。银行ETF...
中泰化学:7月4日召开董事会会... 中泰化学(维权)7月4日晚间发布公告称,公司八届2025年第二次董事会临时会议于2025年7月4日以...
山东潍坊经济社会发展成果新闻发... 转自:新华财经7月4日,潍坊市人民政府新闻办公室举行“决胜‘十四五’谋篇‘十五五’”潍坊市经济社会发...
青海乐都:科技赋能绘就湟水河畔... 转自:新华财经“以前湟水河上难得见几只水鸟,现在野鸭成群,连白天鹅都来安家了!”海东市乐都区居民张莉...
住建部:持续巩固房地产市场稳定... 住房城乡建设部调研组近日赴广东、浙江两省调研。调研组表示,促进房地产市场平稳、健康、高质量发展具有重...