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相关推荐

  1. locust工具学习笔记(三)-Tasks属性、tag修饰符、TaskSet类

    locust工具学习笔记(三) 虚拟用户数分配和权重的关系 1.一个场景文件中如果定义多个用户类,用来对不同用户行为进行压测时,可以用weight属性来控制用户行为执行权重 2.当用户权重不足1人时, ...

  2. 【传智播客】Libevent学习笔记(四):事件event

    目录 00. 目录 01. 事件概述 02. 创建事件 03. 事件的标志 04. 事件持久性 05. 超时事件 06. 信号事件 07. 设置不使用堆分配的事件 08. 事件的未决和非未决 09. ...

  3. swift学习笔记(四)关于类的继承

    在swift中,继承是区分类与其它对象的基本特征 继承后的子类能够重写父类的方法,包含类方法和实例方法,属性和附属脚本(subscript) 在继承过程中,构造器方法init()是不被继承的,须要显示 ...

  4. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门

    (下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...

  5. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

  6. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  7. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  8. Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例

    Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...

  9. ROS学习笔记四:理解ROS节点

    ROS学习笔记四:理解ROS节点 本节主要介绍ROS图形概念,讨论ROS命令行工具roscore.rosnode和rosrun. 要求 要求已经在Linux系统中安装一个学习用的ros软件包例子: s ...

最新文章

  1. [LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal
  2. 公交车下发现一具男尸
  3. TopCoder入门教程
  4. linux mysql怎么启动_linux下安装完mysql 怎么启动
  5. 斯坦福《编程方法学》 笔记与资源
  6. 如果使用StateServer或SQLServer,会遇到的问题。。。。
  7. Python collection模块
  8. Remove Assignments to Parameters(移除对参数的赋值)
  9. mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
  10. android sax解析xml
  11. 编译原理论文_我的第一篇论文
  12. 雷观(二):当今时代最须要6项能力
  13. java 27 - 7 反射之 通过反射越过泛型检查
  14. [概率论与数理统计-1]: 总体架构、知识结构、知识体系
  15. MySQL for Excel的安装教程
  16. windows下OpenCV扩展模块(Extra Contrib)配置时的“Invalid escape sequence \o“解决方法
  17. 第二章作业习题答案续
  18. 35岁 计算机 学 什么好,35岁一事无成, 想重新学习, 应该学习哪方面的技能?
  19. ios 开发 flurry 资料
  20. 成功者的13个良好习惯

热门文章

  1. 2D DenseUnet-based脑胶质瘤分割BraTs+论文翻译+代码实现
  2. 大数据[博学谷IT技术支持]
  3. Android移动应用ALL IN ONE架构衍变
  4. 《企业安全解决方案》
  5. Linux-虚拟机ping不通主机
  6. Vue vue-router中必不可少的redirect,meta和hidden三个属性
  7. java判断浏览地址是手机还是pc,判断是手机还是PC浏览器的方法
  8. 计算机高级语言c高起专阶段性作业1,重庆大学网络教育高起专计算机应用基础入学测试模拟题及答案2...
  9. 推荐:5款可以教你编程的游戏
  10. 明代画家徐渭-《墨葡萄图》