locust工具学习笔记(四)-SequentialTaskSet 类、event hooks
SequentialTaskSet 类
在locust中用户(线程)执行任务是随机的,如果需要让任务执行有一定顺序则可以将taskset继承SequentialTaskSet 类来实现。
写法一
from locust import User,SequentialTaskSet,task,constantclass MyUserBe(SequentialTaskSet):wait_time = constant(1)@taskdef my_task1(self):print("用户行为1")@taskdef my_task2(self):print("用户行为2")@taskdef my_task3(self):print("用户行为3")@taskdef my_task4(self):print("用户行为4")class MyUser(User):wait_time = constant(1)tasks = [MyUserBe]写法二、
from locust import User,SequentialTaskSet,task,constantclass MyUser(User):wait_time = constant(1)@taskclass MyUserBe(SequentialTaskSet):wait_time = constant(1)@taskdef my_task1(self):print("用户行为1")@taskdef my_task2(self):print("用户行为2")@taskdef my_task3(self):print("用户行为3")@taskdef my_task4(self):print("用户行为4") #每一个启动的用户都会顺序执行my_task1,my_task2,my_task3,my_task4
[2021-01-24 10:04:21,117] SKY-20210118WDX/INFO/locust.runners: Spawning 1 users at the rate 1 users/s (0 users already running)...
[2021-01-24 10:04:21,122] SKY-20210118WDX/INFO/locust.runners: All users spawned: MyUser: 1 (1 total running)
用户行为1
用户行为2
用户行为3
用户行为4
用户行为1
用户行为2
用户行为3
用户行为4
用户行为1
用户行为2
用户行为3
用户行为4
用户行为1
用户行为2
用户行为3
用户行为4
用户行为1
用户行为2
用户行为3
用户行为4
event hooks
event hooks位于该events属性下的Environment实例上。但是,由于在导入locustfile时尚未创建Environment实例,因此也可以通过locust.events变量在蝗虫文件的模块级别访问event对象 。
设置事件监听器的示例
from locust import events,HttpUser,constant,task
#@events.request_failure.add_listener() #设置事件监听器-请求失败时将被执行
@events.request_success.add_listener #设置事件监听器-请求成功时将被执行
def process_success_requests(request_type,name,response_time,response_length,**kwargs):print('success Type: {}, Name: {}, Respose_Time: {}, Length: {}'.format(request_type,name,response_time,response_length))class MyUser(HttpUser):wait_time = constant(1)@taskdef open_index(self):self.client.get("https://www.baidu.com/")H:\2021\PythonProject\Learning>locust -f H:\2021\PythonProject\Learning\locust_demo17.py
[2021-01-24 10:53:32,873] SKY-20210118WDX/INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)
[2021-01-24 10:53:32,889] SKY-20210118WDX/INFO/locust.main: Starting Locust 1.4.1
[2021-01-24 10:53:51,655] SKY-20210118WDX/INFO/locust.runners: Spawning 3 users at the rate 1 users/s (0 users already running)...
success Type: GET, Name: /, Respose_Time: 234.00000000037835, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 233.99999999946886, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 63.00000000010186, response_Length: 2443
[2021-01-24 10:53:53,664] SKY-20210118WDX/INFO/locust.runners: All users spawned: MyUser: 3 (3 total running)
success Type: GET, Name: /, Respose_Time: 108.99999999946886, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 46.99999999957072, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 46.000000000276486, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 14.999999999417923, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 30.99999999994907, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 32.000000000152795, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 16.000000000531145, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 15.99999999962165, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 32.000000000152795, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 15.000000000327418, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 14.999999999417923, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 15.000000000327418, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 15.99999999962165, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 16.000000000531145, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 15.000000000327418, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 78.99999999972351, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 46.99999999957072, response_Length: 2443
success Type: GET, Name: /, Respose_Time: 46.99999999957072, response_Length: 2443
with管理上下文
with…as …关键字的作用相当于try/finally。使用with时为了简化代码使之更具可读性。
from locust import User,task,constantclass MyUser(User):wait_time = constant(1)@taskdef my_task1(self):with self.client.get("/", catch_response=True) as response: if response.text != "Success":response.failure("Got wrong response")elif response.elapsed.total_seconds() > 0.5:response.failure("Request took too long")
logging日志
在厕所过程中如果需要打印日志用于调试,则就需要使用日志管理logging。
logging模块是python标准库中得模块。
from locust import User,SequentialTaskSet,task,constant
import logging as logclass MyUserBe(SequentialTaskSet):wait_time = constant(1)@taskdef my_task1(self):log.error("用户行为1")@taskdef my_task2(self):log.info("用户行为2")@taskdef my_task3(self):log.debug("用户行为3")@taskdef my_task4(self):log.warning("用户行为4")class MyUser(User):wait_time = constant(1)tasks = [MyUserBe]
#在当前目录下回生产locust.log日志文件
#locust -f H:\2021\PythonProject\Learning\locust_demo20.py --logfile=locust.log
[2021-01-24 14:09:15,737] SKY-20210118WDX/INFO/locust.runners: Spawning 5 users at the rate 1 users/s (0 users already running)...
[2021-01-24 14:09:15,745] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:16,745] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:16,817] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:17,753] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:17,753] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:18,755] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:18,755] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:18,827] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:19,755] SKY-20210118WDX/INFO/locust.runners: All users spawned: MyUser: 5 (5 total running)
[2021-01-24 14:09:19,755] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:19,755] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:19,755] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:19,827] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:20,763] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:20,763] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:20,763] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:20,835] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:21,771] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:21,771] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:21,771] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:22,779] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:22,779] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:22,779] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:22,850] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:23,786] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:23,786] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:23,786] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:23,858] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:24,794] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:24,794] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:24,794] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:24,866] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:25,802] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:25,802] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:25,802] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:26,810] SKY-20210118WDX/INFO/root: 用户行为2
[2021-01-24 14:09:26,810] SKY-20210118WDX/WARNING/root: 用户行为4
[2021-01-24 14:09:26,810] SKY-20210118WDX/ERROR/root: 用户行为1
[2021-01-24 14:09:26,882] SKY-20210118WDX/WARNING/root: 用户行为4
欢迎大家关注我的订阅号,会定期分享一些关于测试相关的文章,有问题也欢迎一起讨论学习!
locust工具学习笔记(四)-SequentialTaskSet 类、event hooks相关推荐
- locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类
locust工具学习笔记(三) 虚拟用户数分配和权重的关系 1.一个场景文件中如果定义多个用户类,用来对不同用户行为进行压测时,可以用weight属性来控制用户行为执行权重 2.当用户权重不足1人时, ...
- 【传智播客】Libevent学习笔记(四):事件event
目录 00. 目录 01. 事件概述 02. 创建事件 03. 事件的标志 04. 事件持久性 05. 超时事件 06. 信号事件 07. 设置不使用堆分配的事件 08. 事件的未决和非未决 09. ...
- swift学习笔记(四)关于类的继承
在swift中,继承是区分类与其它对象的基本特征 继承后的子类能够重写父类的方法,包含类方法和实例方法,属性和附属脚本(subscript) 在继承过程中,构造器方法init()是不被继承的,须要显示 ...
- Postman接口测试工具学习笔记(一)接口测试概念及Postman入门
(下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例
Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...
- ROS学习笔记四:理解ROS节点
ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...
最新文章
- [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
- 公交车下发现一具男尸
- TopCoder入门教程
- linux mysql怎么启动_linux下安装完mysql 怎么启动
- 斯坦福《编程方法学》 笔记与资源
- 如果使用StateServer或SQLServer,会遇到的问题。。。。
- Python collection模块
- Remove Assignments to Parameters(移除对参数的赋值)
- mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
- android sax解析xml
- 编译原理论文_我的第一篇论文
- 雷观(二):当今时代最须要6项能力
- java 27 - 7 反射之 通过反射越过泛型检查
- [概率论与数理统计-1]: 总体架构、知识结构、知识体系
- MySQL for Excel的安装教程
- windows下OpenCV扩展模块(Extra Contrib)配置时的“Invalid escape sequence \o“解决方法
- 第二章作业习题答案续
- 35岁 计算机 学 什么好,35岁一事无成, 想重新学习, 应该学习哪方面的技能?
- ios 开发 flurry 资料
- 成功者的13个良好习惯
热门文章
- 2D DenseUnet-based脑胶质瘤分割BraTs+论文翻译+代码实现
- 大数据[博学谷IT技术支持]
- Android移动应用ALL IN ONE架构衍变
- 《企业安全解决方案》
- Linux-虚拟机ping不通主机
- Vue vue-router中必不可少的redirect,meta和hidden三个属性
- java判断浏览地址是手机还是pc,判断是手机还是PC浏览器的方法
- 计算机高级语言c高起专阶段性作业1,重庆大学网络教育高起专计算机应用基础入学测试模拟题及答案2...
- 推荐:5款可以教你编程的游戏
- 明代画家徐渭-《墨葡萄图》