Locust框架从0到1入门

news2024/11/15 5:18:13

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)
    
    @task
    def 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, task

class 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()装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被虚拟用户执行的概率越高,默认为1
    def 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

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

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

相关文章

【目标检测】正负样本分配策略

YOLO v3 目标的中心点在哪个网格内由该网格负责预测该目标,max-iou matching策略 (1)计算GT的中心点在哪个网格; (2)计算该网格内的所有anchor与GT的IOU,选择IOU最大的anchor负责预测该GT&…

嵌入安防监控项目——BOA服务器的移植

目录 一、源码下载 1.1 boa简介: 1.2BOA再项目中的使用 二、解压源码: 三、进入源码目录下的src目录: 四、make 编译源码: 五、建立安装目录 六、返回boa的顶层目录 --- 修改配置文件 七、建立测试页面 八、查看/boa目…

43-Golang中的goroutine!!!

Golang中的goroutine进程和线程说明并发和并行并发并行Go协程和Go主线程案例小结goroutine的调度机制MPG模式基本介绍MPG模式运行的状态1MPG模式运行的状态2设置GOlang运行的CPU数不同 goroutine之间如何通讯使用全局变量加锁同步改进程序进程和线程说明 1.进程就是程序在操作…

robosuite添加无碰撞的模型

1 前言 最近在使用robosuite时,需要在仿真环境中可视化物体的目标位置,从而方便观察训练情况,可视化的物体有以下要求: 形状尺寸与操作的物体一样半透明只有visual,不与场景其他物体有碰撞可以在每次step后设置位置,且固定在设定的位置,不受重力影响 2 方法 找了半天,最终确…

javaWeb核心04-CookieSession

文章目录会话技术1,会话跟踪技术的概述2,Cookie2.1 Cookie的基本使用2.2 Cookie的原理分析2.3 Cookie的使用细节2.3.1 Cookie的存活时间2.3.2 Cookie存储中文3,Session3.1 Session的基本使用3.2 Session的原理分析3.3 Session的使用细节3.3.1…

2018年MathorCup数学建模D题公交移动支付问题的评估方案解题全过程文档及程序

2018年第八届MathorCup高校数学建模挑战赛 D题 公交移动支付问题的评估方案 原题再现: 随着智能手机的普及和移动支付技术的提高,越来越多的支付手段可以转移到手机端。现有的现金缴费和实体公交卡刷卡的付费方式存在缺点,如公交卡在使用过程中存在着充…

Landsat8中*_MTL.txt文件详解

01 什么是*_MTL.txt文件?所有的Landsat8 1级数据产品中均包含MTL.txt(Metadata File)文件。Landsat MTL文件包含对数据的系统搜索和归档分类有益的信息。该文件还包含关于数据处理和恶对增强陆地卫星数据有重要价值的信息(例如转换为反射率和辐射亮度&am…

Java 集合进阶(二)

文章目录一、Set1. 概述2. 哈希值3. 元素唯一性4. 哈希表5. 遍历学生对象6. LinkedHashSet7. TreeSet7.1 自然排序7.2 比较器排序8. 不重复的随机数二、泛型1. 概述2. 泛型类3. 泛型方法4. 泛型接口5. 类型通配符6. 可变参数7. 可变参数的使用一、Set 1. 概述 Set 集合特点&am…

AI领域通识

人工智能的架构:通常来说,人工智能架构分为四层:最底层的基础层一般由软硬件设施以及数据服务组成。软件设施主要包括智能云平台和大数据平台,比如国外的谷歌大数据平台和国内的百度智能云平台等;硬件设施主要包括CPU硬…

讨论基于最新的(v5或v6版本)UXP插件开发的开发框架的选择问题

看过我的上两篇文章后,相信你对UXP的开发环境已经有一定了解了,然后这里讨论一个问题,UXP的开发可以基于纯htmlcssjs、vue框架、react框架、svelte框架,就是到底用哪种方式开发更好了?一般情况是用自己最熟悉的或者是使…

使用vue脚手架创建vue项目

大家好,这里是 一口八宝周 👏欢迎来到我的博客 ❤️一起交流学习文章中有需要改进的地方请大佬们多多指点 谢谢 🙏使用脚手架创建vue项目步骤:切换淘宝镜像npm config set registry https://registry.npm.taobao.org安装脚手架npm…

算法拾遗二十七之窗口最大值或最小值的更新结构

算法拾遗二十七之窗口最大值或最小值的更新结构滑动窗口题目一题目二题目三题目四滑动窗口 第一种:R,R右动,数会从右侧进窗口 第二种:L,L右动,数从左侧出窗口 题目一 arr是N,窗口大小为W&…

C++ linux下获取时间戳 秒、微妙、纳秒

1.例子#include <iostream>#include <sys/time.h>#include <cstdlib>#include <cstdio>#include <ctime>#include <cmath>#include <unistd.h>usingnamespace std;time_t clocktime(){time_t t time(NULL);std::cout << &quo…

聚势合力,电巢与SDIA协会“战略合作签约仪式”圆满落成

前言&#xff1a; 2023年03月02日下午&#xff0c;电巢科技与深圳市平板显示行业协会齐聚深圳南山电巢XR演播厅&#xff0c;共同举办了隆重的战略合作签约仪式。 双方就数字化建设、品牌赋能、人才培养、技术创新等企业服务深入合作上达成一致&#xff0c;合力为产业赋能&…

【OJ比赛日历】快周末了,不来一场比赛吗? #03.11-03.17 #12场

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号同时会推送最新的比赛消息&#xff0c;欢迎关注&#xff01;更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考&#xff0c;以比赛官网为准目录2023-03-11&…

netty-websocket 鉴权token及统一请求和响应头(鉴权控制器)

自己想法和实现&#xff0c;如果有说错的或者有更好的简单的实现方式可以私信交流一下(主要是实现握手时鉴权) 需求实现 握手鉴权是基于前台请求头 Sec-WebSocket-Protocol的本身socket并没有提供自定义请求头&#xff0c;只能自定义 Sec-WebSocket-Protocol的自协议 问题描述…

你几乎不知道的浏览器内置对象/事件/ajax

浏览器内置对象/事件/ajax 浏览器是⼀个 JS 的运⾏时环境&#xff0c;它基于 JS 解析器的同时&#xff0c;增加了许多环境相关的内容。⽤⼀张图表示各个运⾏环境和 JS 解析器的关系如下&#xff1a; 我们把常⻅的&#xff0c;能够⽤ JS 这⻔语⾔控制的内容称为⼀个 JS 的运⾏环…

Leetcode—环形链表

前言&#xff1a;给定一个链表&#xff0c;判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表&#xff0c;具体如下图所示。 对于链表&#xff0c;我们如何去判断链表是循环链表呢&#xff1f;又寻找入环点呢&#xff1f;我们可以利用快慢指针的方法…

Meta CTO:Quest 2生命周期或比预期更久

前不久&#xff0c;Meta未来4年路线图遭曝光&#xff0c;泄露了该公司正在筹备中的一些AR/VR原型。除此之外&#xff0c;还有消息称Quest Pro或因销量不佳&#xff0c;而不再迭代。毫无疑问&#xff0c;Meta的一举一动持续受到行业关注&#xff0c;而面对最近的爆料&#xff0c…

关于指针运算的一道题

目录 刚看到这道题的时候我也和大多数小白一样感到无从下手&#xff0c;但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解。所以我就想着趁热打铁&#xff0c;写一篇博客来记录一下我的想法。 题目如下&#xff1a; 画图&#xff1a; 逐一解答&#xff1a; 题一…