当前位置: 首页 > news >正文

二 、Locust自定义用户(场景)

二 、自定义用户(场景)

一个用户类代表了你系统中的一种用户/场景。当你做一个测试运行时,你指定你想模拟的并发用户的数量,Locust将为每个用户创建一个实例。你可以给这些类/实例添加任何你喜欢的属性,但有一些属性对Locust有特殊的意义。

1 .等待时间属性

用户的wait_time方法使得在每个任务执行后引入延迟变得容易。

如果没有指定wait_time,一个任务完成后,下一个任务就会被执行。

from locust import User, task, betweenclass MyUser(User):@taskdef my_task(self):print("executing my_task")wait_time = between(0.5, 10) # wait_time = constant(3) # 每3秒执行一次任务task任务# wait_time = constant_throughput(0.1) # 每10秒执行一次task任务# wait_time = constant_pacing(10) # 每10秒执行一次task任务
  • constant: 固定时间的常量

  • between: 介于最小和最大值之间的随机时间

  • constant_throughput : 自适应时间,确保任务每秒运行(最多)X次。

  • constant_pacing: 为自适应时间,确保任务每X秒运行一次(最多)

  • constant_throughput 和 constant_pacing 这两个参数互为倒数。

注意:

例如,如果你想让Locust在峰值负载下每秒运行500个任务迭代,你可以使用wait_time = constant_throughput(0.1),用户数为5000。

等待时间只能限制吞吐量,而不能启动新的用户来达到目标。因此,在我们的例子中,如果任务迭代的时间超过10秒,吞吐量将小于500。

等待时间是在任务执行后应用的,所以如果你有一个高的产卵率/升温,你可能会在升温期间最终超过你的目标。

等待时间适用于任务,而不是请求。例如,如果你指定wait_time = constant_throughput(2)并在你的任务中做两个请求,你的请求率/RPS将是每个用户4。

2. 自定义任务休眠策略

也可以直接在你的类上声明你自己的wait_time方法。例如,下面的User类将睡眠一秒,然后是两秒,然后是三秒,等等。

class MyUser(User):last_wait_time = 0def wait_time(self):self.last_wait_time += 1return self.last_wait_time...

3. 权重和固定计数属性

如果文件中存在一个以上的用户类,并且没有在命令行中指定用户类,每个类都会生成等量的用户。

你也可以通过传递命令行参数来指定使用同一locust文件中的哪些用户类。

locust -f locust_file.py WebUser MobileUser

如果你希望模拟更多的某一类型的用户,你可以在这些类别上设置一个权重属性。

比如说,网络用户比移动用户多三倍。

class WebUser(User):weight = 3...class MobileUser(User):weight = 1

你也可以设置 fixed_count 属性。

在这种情况下,权重属性将被忽略,精确计数的用户将被催生, 这些用户会先被生成。

在下面的例子中,只有一个AdminUser的实例将被生成,以使一些特定的工作与独立于总用户数的请求数的更精确控制。

class AdminUser(User):wait_time = constant(600)fixed_count = 1@taskdef restart_app(self): # 此任务只能生成一次。并且它先生成和最先执行。...class WebUser(User):...

4. 主机属性

host属性是一个URL前缀(即 “http://google.com”),指向要加载的主机。通常情况下,这是在Locust的Web用户界面或在命令行中,使用–host选项,在locust启动时指定的。

如果在用户类中声明了一个主机属性,在命令行或网络请求中没有指定–host的情况下,它将被使用。

host 是user 类的属性,可以直接在类中指定。

5. 任务属性

一个用户类可以使用@task装饰器将任务声明为其下的方法,但我们也可以使用tasks属性来指定任务,下面将详细介绍。

6. 环境属性

对用户正在运行的环境的一个引用。使用它来与环境或它所包含的运行器进行交互。

例如,从一个任务方法中停止运行器。

self.environment.runner.quit()

如果在一个独立的蝗虫实例上运行,这将停止整个运行。如果在工作节点上运行,它将停止该特定节点。

7. 启动初始化和停止方法

User(和 TaskSets)可以声明一个 on_start 方法和/或 on_stop 方法。
一个用户在开始运行时将调用它的on_start方法,在停止运行时调用它的on_stop方法。
对于一个任务集,当模拟用户开始执行该任务集时,on_start方法被调用,而当模拟用户停止执行该任务集时(当interrupt()被调用,或用户被杀死),on_stop被调用。

更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449

在这里插入图片描述

更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449

相关文章:

二 、Locust自定义用户(场景)

二 、自定义用户(场景) 一个用户类代表了你系统中的一种用户/场景。当你做一个测试运行时,你指定你想模拟的并发用户的数量,Locust将为每个用户创建一个实例。你可以给这些类/实例添加任何你喜欢的属性,但有一些属性对…...

1~3年的测试工程师薪资陷入了瓶颈期,如何突破自己实现涨薪?

对于技术人员而言,职业规划一般分为两个方向:做技术、做管理。进入软件测试行业的新人都会从最基础的执行开始,然后是基本的功能测试。 随后大家会根据个人职业发展来进一步细化,有的走管理路线,成为主管、经理、项目…...

springboot项目前端ajax 07进阶优化,使用jQuery的ajax

使用官网https://jquery.com/ 在下载那里,选择Download the compressed, production jQuery 3.6.4(版本不一样),而后在打开的网页中,选择另存为,就下载好了js文件。 > function doAjax(){ …...

东数西存场景的探索与实践

“东数西算”是通过构建数据中心、云计算、大数据一体化的新型算力网络体系,将东部算力需求有序引导到西部,对优化数据中心建设布局,提升国家整体算力水平,促进绿色发展,扩大有效投资,具有重要意义。 在实…...

[图神经网络]PyTorch简单实现一个GCN

Pytorch自带一个PyG的图神经网络库,和构建卷积神经网络类似。不同于卷积神经网络仅需重构__init__( )和forward( )两个函数,PyTorch必须额外重构propagate( )和message( )函数。 一、环境构建 ①安装torch_geometric包。 pip install torch_geometric …...

Elasticsearch(黑马)

初识elasticsearch ​​. 安装elasticsearch 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net 1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的…...

oracle数据库调整字段类型

oracle数据库更改字段类型比较墨迹,因为如果该字段有值,是不允许直接更改字段类型的。另外oralce不支持在指定的某个字段后面新增一个字段,但是mysql数据可以向指定的字段后面新增一个字段。 mysql向指定字段后面新增一个字段: al…...

面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码)

面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码) 目录 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码) 1.面部表情识别方法 2.面部表情识别数据集 (1)表情识别数据集说明 (2&…...

赛效:如何在线给图片加水印

学会给图片加水印是一个非常实用的技能,可以让你的图片更具保护性和个性化。说到加水印,很多人不知道怎么操作。其实,给图片加水印非常简单,不用下载任何程序,在线就能完成。今天,我将介绍如何使用改图宝在…...

动力节点杜老师Vue笔记——Vue程序初体验

一、Vue程序初体验 我们可以先不去了解Vue框架的发展历史、Vue框架有什么特点、Vue是谁开发的,这些对我们编写Vue程序起不到太大的作用,更何况现在说了一些特点之后,我们也没有办法彻底理解它,因此我们可以先学会用,使…...

ajax上传图片存入到指定的文件夹并回显

html代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"js/jquery-2.1.0.js"></script> </head> <body> <form…...

cesium加载cesiumlab切的影像切片和标准TMS瓦片的区别

1.加载cesiumlab切的影像 var labImg viewer.scene.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({url:http://192.168.1.25:8080/DOMtms/{z}/{x}/{y}.png,fileExtension : "png"})); 2.标准TMS瓦片 var labImg viewer.scene.im…...

第二周P9-P22

文章目录第三章 系统总线3.1、总线的基本概念一、为什么要用总线二、什么是总线三、总线上信息的传送四、总线结构的计算机举例1、单总线结构框图2、面向CPU的双总线结构框图3、以存储器为中心的双总线结构图3.2、总线的分类1、片内总线2、系统总线3、通信走线3.3、总线特性及性…...

java反射

文章目录何为反射&#xff1f;反射的应用场景了解么&#xff1f;谈谈反射机制的优缺点优点缺点反射实战获取 Class 对象的四种方式1. 知道具体类的情况下可以使用TargetObject.class&#xff1a;2. 通过 Class.forName()传入类的全路径获取&#xff1a;3. 通过对象实例instance…...

307 Temporary Redirect 解决办法(临时重定向)

背景&#xff1a;java后台服务请求python服务端 java服务报错&#xff1a;Unexpected response status&#xff1a;307 python服务端报错&#xff1a;307 Temporary Redirect 解决&#xff1a;查了好久找不到什么原因&#xff0c;请求路径问题 请求url&#xff1a;http//:w…...

SpringBoot案例

SpringBoot案例5&#xff0c;案例5.1 创建工程5.2 代码拷贝5.3 配置文件5.4 静态资源目标 基于SpringBoot的完成SSM整合项目开发 5&#xff0c;案例 SpringBoot 到这就已经学习完毕&#xff0c;接下来我们将学习 SSM 时做的三大框架整合的案例用 SpringBoot 来实现一下。我们完…...

Android 10.0 系统framework发送悬浮通知的流程分析

1.前言 在android10.0rom定制化开发中,在原生系统的systemui中,状态栏通知,和闹钟,wifi等悬浮通知也是很重要的, 悬浮通知也是系统通知的一种,也是在frameworks中发送出来的通知,接下来就分析下10.0中的悬浮通知的发送 流程,然后就可以实现自己自定义悬浮通知的相关功…...

傅里叶谱方法-傅里叶谱方法求解二维浅水方程组和二维粘性 Burgers 方程及其Matlab程序实现

3.3.2 二维浅水方程组 二维浅水方程组是描述水波运动的基本方程之一。它主要用于描述近岸浅水区域内的波浪、潮汐等水动力学现象。这个方程组由两个偏微分方程组成&#xff0c;一个是质量守恒方程&#xff0c;另一个是动量守恒方程。浅水方程描述了具有自由表面、密度均匀、深…...

算法训练营 - 广度优先BFS

目录 从层序遍历开始 N 叉树的层序遍历 经典BFS最短路模板 经典C queue 数组模拟队列 打印路径 示例1.bfs查找所有连接方块 Cqueue版 数组模拟队列 示例2.从多个位置同时开始BFS 示例3.抽象最短路类&#xff08;作图关键&#xff09; 示例4.跨过障碍的最短路 从层序遍历…...

​​​​​​​判断两个字符串是否匹配(1个通配符代表一个字符)

目录 判断两个字符串是否匹配(1个通配符代表一个字符) 程序设计 程序分析...

用css画一个csdn程序猿

效果如下&#xff1a; 头部 我们先来拆解一下&#xff0c;程序猿的结构 两只耳朵和头是圆形组成的&#xff0c;耳朵内的红色部分也是圆形 先画头部&#xff0c;利用圆角实现头部形状 借助工具来快速实现圆角效果 https://9elements.github.io/fancy-border-radius/ <div…...

Java多线程编程—wait/notify机制

文章目录1. 不使用wait/notify机制通信的缺点2. 什么是wait/notify机制3. wait/notify机制原理4. wait/notify方法的基本用法5. 线程状态的切换6. interrupt()遇到方法wait()7. notify/notifyAll方法8. wait(long)介绍9. 生产者/消费者模式10. 管道机制11. 利用wait/notify实现…...

Three.js教程:旋转动画、requestAnimationFrame周期性渲染

推荐&#xff1a;将NSDT场景编辑器加入你3D工具链其他工具系列&#xff1a;NSDT简石数字孪生基于WebGL技术开发在线游戏、商品展示、室内漫游往往都会涉及到动画&#xff0c;初步了解three.js可以做什么&#xff0c;深入讲解three.js动画之前&#xff0c;本节课先制作一个简单的…...

租车自驾app开发有什么作用?租车便利出行APP开发

在线租车APP有哪些优势&#xff0c;租车APP开发的基本功能&#xff0c;租车自驾app开发有什么作用?租车便利出行APP开发&#xff0c;租车服务平台小程序有哪些功能&#xff0c;租车软件开发需要多少钱&#xff0c;租车app都有哪些&#xff0c;租车平台定制开发&#xff0c;租车…...

linux shell 文件分割

split 按照 10m 大小进行分割 split -b 10m large_file.bin new_file_prefix...

智慧农业系统开发功能有哪些?

农业从古至今都是备受关注的话题&#xff0c;新时代背景下农业发展已经融合了互联网&#xff0c;数字化技术等新型发展方式&#xff0c;形成了农业物联网管控系统&#xff0c;让农业生产更加科技化、智能化、高效化&#xff0c;对农业可持续发展有巨大的推动作用。所以&#xf…...

【C语言】 指针的进阶 看这一篇就够了

目录 1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.qsort排序和冒泡排序 1.字符指针 让我们一起来回顾一下指针的概念&#xff01; 1.指针就是一个变量&#xff0c;用来存放地址&#xff0c;地址…...

redis set list

Listlist: 插入命令&#xff1a;lpush / rpush 查看list列表所有数据(-1 表示最后一个)&#xff1a;lrange key 0 -1 查看列表长度(key 不存在则长度返回0 ): llen key list长度 获取下表 为 0 的元素 修改下标为0的元素&#xff0c;改为haha 移除列表的第一个元素 或最后一…...

如何解决DNS劫持

随着互联网的不断发展&#xff0c;DNS(域名系统)成为了构建网络基础的重要组成部分。而DNS遭到劫持&#xff0c;成为一种常见的安全问题。那么DNS遭到劫持是什么意思呢?如何解决DNS劫持问题呢?下面就让小编来为您一一解答。 DNS遭到劫持是什么意思? DNS遭到劫持指的是黑客通…...

【LeetCode】剑指 Offer(28)

目录 题目&#xff1a;剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 55 - I. 二叉树的深度 - 力…...

什么网站可以看到绵阳建设/微信朋友圈广告

数据结构实验之链表五&#xff1a;单链表的拆分 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description 输入N个整数顺序建立一个单链表&#xff0c;将该单链表拆分成两个子链表&#xff0c;第一个子链表存放了所有的偶数&#xff0c…...

wordpress固定链接优化/网站如何做seo排名

今天在测试struts2的时候&#xff0c;启动tomcat6报错&#xff1a; Unrecognized Windows Sockets error: 0: JVM_Bind 很明显是端口被占用导致的。 以前为了防止端口冲突问题把tomcat的端口改成了8888&#xff0c;那么就先来看看到底是什么占用了8888这个端口&#xff1a; 原来…...

百度搜不到网站/如何分步骤开展seo工作

QT样式表单 QT的样式表单允许我们在对程序不做任何代码上的更改的情况下轻松改变应用程序的外观。 其思想来源于网页设计中的CSS&#xff0c;即可以将功能设计和美学设计分开。 它的语法和概念和HTML CSS也是差不多的。 其原理可简单理解为&#xff1a;QT内部存在一个CSS语法解…...

给客户做一个网站ppt怎么做/外包seo服务口碑好

安装 Python 模块 作为一个流行的开源开发项目&#xff0c;Python拥有一个活跃的贡献者和用户支持社区&#xff0c;这些社区也可以让他们的软件可供其他Python开发人员在开源许可条款下使用。 这允许Python用户有效地共享和协作&#xff0c;从其他人已经创建的解决方案中受益于…...

wordpress自动添加关键字/免费推广网站入口

有人曾问&#xff0c;如何正确估算项目周期&#xff1f;你是天天写C#程序的程序员&#xff0c;若做了一个 PHPwind 的单点登录&#xff0c;那估计需要几天时间&#xff1f;客户只提了一个需求&#xff0c;门户网站需要与 PHPwind 需要有单点登录功能&#xff0c;问你多长时间能…...

自己电脑做网站服务器广域网访问/如何做网销

过去不久曾写过一篇视频如何添加字幕的教程&#xff0c;主要是让用户学会使用狸窝全能视频转换器可以把srt、ass类型的字幕添加到视频。大家可以看下(视频怎么加字幕 支持srt&#xff0c;ass字幕添加转换格式: http://www.leawo.cn/space-627-do-thread-id-31840.html)。那么有…...