六、Locust之TaskSets详解
TaskSets是一种结构化测试分层网站/系统的方法。你可以在这里关于它的信息。
1.TaskSet class
如果你正在对一个以分层方式构建的网站进行性能测试,有章节和子章节,以同样的方式构建你的负载测试可能是有用的。
为了这个目的,Locust提供了TaskSet类。它是一个任务的集合,将被执行,就像直接在用户类上声明的那些任务。
注意:
任务集是一个高级功能,只是很少有用。大多数时候,你最好使用常规的 Python 循环和控制语句来实现同样的事情。也有一些问题,最常见的是忘记调用self.interrupt()
from locust import User, TaskSet, constantclass ForumSection(TaskSet):wait_time = constant(1)@task(10)def view_thread(self):pass@taskdef create_thread(self):pass@taskdef stop(self):self.interrupt()class LoggedInUser(User):wait_time = constant(5)tasks = {ForumSection:2}@taskdef my_task(self):pass
一个任务集也可以使用@task装饰器直接内联到User/TaskSet类下。
class MyUser(User):@taskclass MyTaskSet(TaskSet):...
一个任务集类的任务可以是其他的任务集类,允许它们嵌套任何数量的级别。这使得我们可以定义一种行为,以一种更真实的方式模拟用户。
例如,我们可以定义具有以下结构的TaskSets。
- Main user behaviour- Index page- Forum page- Read thread- Reply- New thread- View next page- Browse categories- Watch movie- Filter movies- About page
当一个正在运行的用户线程选择一个TaskSet类来执行时,这个类的实例将被创建,然后执行将进入这个TaskSet。
然后发生的事情是,TaskSet的一个任务将被选中并执行,然后线程将睡眠一个由User的wait_time函数指定的持续时间(除非在TaskSet类上直接声明了一个wait_time函数,在这种情况下,它将使用该函数),然后从TaskSet的任务中挑选一个新任务,再次等待,如此循环。
TaskSet实例包含一个对用户的引用 - self.user。它也有一个指向其用户的客户端属性的快捷方式。所以你可以使用self.client.request()进行请求,就像你的任务直接定义在一个HttpUser上一样。
2. 终断 TaskSet
关于TaskSets的一个重要的事情是,它们永远不会停止执行它们的任务,并把执行权交还给它们的父用户/TaskSet,自己。这必须由开发者通过调用TaskSet.interrupt()方法来完成。
interrupt(self, reschedule=True)
# 中断任务集并将执行控制权交还给父任务集。
# 如果reschedule为True(默认),父用户将立即重新安排,并执行一个新任务。
在下面的例子中,如果我们没有调用self.interrupt()的停止任务,模拟用户一旦进入论坛的任务集,就永远不会停止运行任务。
class RegisteredUser(User):@taskclass Forum(TaskSet):@task(5)def view_thread(self):pass@task(1)def stop(self):self.interrupt()@taskdef frontpage(self):pass
使用中断函数,我们可以-与任务加权一起–定义一个模拟用户离开论坛的可能性有多大。
3. TaskSet和User中的任务之间的区别
与直接驻留在用户下的任务相比,驻留在 TaskSet 下的任务的一个区别是,它们在执行时被传递的参数(对于用 @task decorator 声明为方法的任务来说,是对 TaskSet 实例的引用,而不是对用户实例的引用。用户实例可以通过 TaskSet.user 从 TaskSet 实例中被访问。TaskSets 还包含一个方便的客户属性,它指的是 User 实例上的客户属性。
4. 引用用户实例,或父任务集实例
一个TaskSet实例的属性user将指向它的User实例,而属性parent则指向它的父任务集实例。
5. 标签和TaskSet
你可以使用@tag装饰器来标记TaskSets,方法与普通任务类似,但有一些细微差别值得一提。给一个TaskSet打上标签,将自动把标签应用到该任务集的所有任务中。
此外,如果你在一个嵌套的TaskSet中标记一个任务,即使这个TaskSet没有被标记,Locust也会执行这个任务。
6. SequentialTaskSet 类
SequentialTaskSet是一个任务集,其任务将按照它们被声明的顺序执行。可以在一个任务集中嵌套SequentialTaskSets,反之亦然。
例如,下面的代码将按顺序请求URLs /1-/4,然后再重复。
def function_task(taskset):taskset.client.get("/3")class SequenceOfTasks(SequentialTaskSet):@taskdef first_task(self):self.client.get("/1")self.client.get("/2")# 您仍然可以使用 tasks 属性来指定任务列表tasks = [function_task]@taskdef last_task(self):self.client.get("/4")
注意,你不需要SequentialTaskSets来按顺序做一些请求。
通常在一个任务中做整个用户流会更容易。
更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449

更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449
相关文章:
六、Locust之TaskSets详解
TaskSets是一种结构化测试分层网站/系统的方法。你可以在这里阅读更多关于它的信息。 1.TaskSet class 如果你正在对一个以分层方式构建的网站进行性能测试,有章节和子章节,以同样的方式构建你的负载测试可能是有用的。 为了这个目的&#x…...
flask_知识点3_css
flask_知识点3_css样式1高度和宽度2行内和块级3字体和颜色4文字对齐方式5浮动6 内边距6 外边距!css重点1、css样式2、分析页面布局3、参考别人的成果css引用方式1 在标签上(不建议使用)// An highlighted block var foo bar;2 在head标签中写…...
Redis_概述_特性_IO模型
本章要点 掌握NoSql数据库的概念和与sql数据库的区别初步了解Redis内存数据库了解Redis内存数据库的优点及其原因掌握Redis的多线程IO模型学习Redis的安装和配置 Redis简介 Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化…...
[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4
Sparks of Artificial General Intelligence: Early experiments with GPT-4 2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI&a…...
舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物
舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言 这不是学姐生日快到了,于是我学了一手使用Python来把学姐的照片生成为视频,到时候给她一个惊喜! 好了先不舔了,下面分享一下用pytho…...
从《移动互联网应用程序(App)收集使用个人信息自评估指南》看个人信息保护着力点
为指导应用运营者对自身收集、使用个人信息行为进行自查自纠,2019年3月,应用专项治理工作组发布了《应用违法违规收集使用行为自查自查指南》。个人信息”。随着对App违法收集、使用个人信息行为评价工作的开展和深入,《App违法违规收集、使用…...
电脑0x0000001A蓝屏错误怎么U盘重装系统教学
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作&…...
Day939.如何小步安全地升级数据库框架 -系统重构实战
如何小步安全地升级数据库框架 Hi,我是阿昌,今天学习记录的是关于如何小步安全地升级数据库框架的内容。 当消息组件的数据存储都是采用 SQL 拼写的方式来操作,这样不便于后续的扩展及维护。除此之外,相比前面的其他重构&#x…...
2023 年十大 API 管理趋势
作者郑玩星,API7.ai 技术工程师。 阅读原文 什么是 API?什么是 API 管理? 近期,AIGC(AI Generated Content,生成式人工智能)在各行业的应用日趋普及。AIGC 服务提供商通过 API 向外部提供其内…...
计算机网络微课堂1-3节
目录 1. TCP/TP协议编辑 2. 3.调制解调器 4.因特网的组成 5.电路交换 6.分组交换 重要常用 7.报文交换 8.总结电路交换 报文交换和分组交换 9. 1. TCP/TP协议 2. ISP 网络提供商 ISP的三层 国际 国家 和本地 3.调制解调器 什么是调制解调器,它存在的…...
[Eigen中文文档] Array类与元素操作
文档总目录 本文目录什么是Array类?Array类型访问Array中的值加法与减法Array乘法其他按元素操作的运算array和matrix表达式之间的转换英文原文(The Array class and coefficient-wise operations) 本页旨在提供有关如何使用Eigen的Array类的概述和说明。 什么是A…...
python学习,全球有哪些特别好的社区推荐呢?
Surfshark可以访问全球社区学习的surfshark工具使用方法教程:qptool.net/shark.html 以下是一些全球范围内比较受欢迎的 Python 学习社区: 中文社区:csdn.net 优势:本土国语社区,获得相关知识与经验便利。 Python官…...
LC-1042. 不邻接植花(四色问题(染色法))
1042. 不邻接植花 难度中等198 有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入…...
python实战应用讲解-【numpy科学计算】scikits-learn模块(附python示例代码)
目录 Numpy 安装scikits-learn 准备工作 具体步骤 Numpy 加载范例数据集 具体步骤...
大数据开发必备面试题Spark篇01
1、Hadoop 和 Spark 的相同点和不同点? Hadoop 底层使用 MapReduce 计算架构,只有 map 和 reduce 两种操作,表达能力比较欠缺,而且在 MR 过程中会重复的读写 hdfs,造成大量的磁盘 io 读写操作,所以适合高时…...
SpringBoot整合xxl-job详细教程
SrpingBoot整合xxl-job,实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。Xxl-Job有…...
【MySQL--04】数据类型
文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…...
git 将其它分支的文件检出到工作区
主要是使用如下命令: git checkout [-f|--ours|--theirs|-m|--conflict<style>] [<tree-ish>] [--] <pathspec>…覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时,用 index 中的内容覆盖工作树…...
人工智能的最大危险是什么?
作者:GPT(AI智学习) 链接:https://www.zhihu.com/question/592107303/answer/2966857095 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先:人工智能为人类带来了很多益处&…...
rk3568点亮E-ink
rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成,微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…...
Docker+iredmail搭建企业级邮件服务器全流程(附常见问题排查)
Dockeriredmail搭建企业级邮件服务器全流程指南 邮件系统作为企业日常沟通的核心基础设施,其稳定性和安全性直接影响业务运转效率。传统邮件服务器部署往往需要复杂的配置和漫长的调试周期,而Docker容器化技术结合iredmail开源邮件解决方案,为…...
JPEXS Free Flash Decompiler与Web3.0存储:去中心化SWF文件管理的终极指南
JPEXS Free Flash Decompiler与Web3.0存储:去中心化SWF文件管理的终极指南 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler是一款功能强大的开源…...
3步搞定ViGEmBus:Windows虚拟游戏手柄驱动终极指南 [特殊字符]
3步搞定ViGEmBus:Windows虚拟游戏手柄驱动终极指南 🎮 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 想要在Windows上体验更丰富的游…...
CRaxsRat v7.4隐藏功能挖掘:用自定义脚本实现批量设备自动化运维
CRaxsRat v7.4隐藏功能实战:JSON脚本引擎在企业级自动化运维中的高阶应用 在企业IT运维领域,效率提升往往隐藏在工具的高级功能层。CRaxsRat v7.4的脚本模块就像瑞士军刀的隐藏刀片——90%的用户只停留在远程桌面和文件管理的基础功能,却不知…...
别再乱用.pem和.key了!用ASN.1 Editor手把手拆解RSA私钥的PKCS#8格式(附OpenSSL 3.1验证)
从文件后缀到密钥本质:用ASN.1 Editor透视RSA私钥的PKCS#8结构 当你在终端输入openssl genpkey -algorithm RSA生成密钥对时,是否曾好奇过.pem文件里那些看似随机的字符究竟隐藏着什么秘密?面对invalid key format的错误提示,又是…...
从零到数据分析:用ClickHouse+DBeaver在Windows上复现一个电商用户行为查询
从零构建电商数据分析平台:Windows下ClickHouse与DBeaver实战指南 1. 为什么选择ClickHouse进行电商行为分析? 去年双十一期间,某头部电商平台通过实时分析用户点击流数据,在活动开始后30分钟内就调整了首页推荐策略,…...
Abp要落地DDD重要的一步
要用到实体之间的依赖关系,也就是聚合根,否则每个实体一个仓储,光一个服务注入就十几个仓储,玩锤子...
MySQL安全加固十大硬核操作
MySQL安全加固十大硬核操作大纲数据库访问控制限制数据库的访问权限,仅允许授权用户和IP访问。修改MySQL配置文件中的bind-address参数,确保仅监听必要的网络接口。强化root账户安全禁止root账户远程登录,创建具有特定权限的替代管理账户。修…...
如何快速上手TradingView图表库:15+框架完整集成实战指南
如何快速上手TradingView图表库:15框架完整集成实战指南 【免费下载链接】charting-library-examples Examples of Charting Library integrations with other libraries, frameworks and data transports 项目地址: https://gitcode.com/gh_mirrors/ch/charting-…...
pyNastran:破解工程仿真困境的Python技术革新者
pyNastran:破解工程仿真困境的Python技术革新者 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 揭示行业痛点:有限元分析的三大核心挑战 现代工程…...
