【转】Locust性能-零基础入门系列(3)-压力权重
本文将继续对Locust性能测试进行持续讲解,主要是讲解虚拟用户数分配和权重的关系。在locust file中进行多用户类的实现和操作。我们这次先上完整的代码:
from locust import User,between,task
import time class WebUser(User):
wait_time = between(5,9)
weight = 3
@task
def task_1(self):
nowTime = time.strftime("%Y-%m-%d %H:%M:%S")
print("This is a web user, test time is: "+nowTime) class MobileUser(User):
wait_time = between(5,9)
weight = 1
@task
def task_2(self):
nowTime = time.strftime("%Y-%m-%d %H:%M:%S")
print("This is a mobile user, test time is: "+nowTime)
代码分析。先从全局看,line 4和line 12是分别定义了2个用户类,这两个类都是继承User类。也都定义了wait_time属性。
在用户 WebUser中定义了一个任务方法task_1,在用户MobileUser中定义了一个任务方法 task_2。
其次是两个用户类中都定义了weight权重属性设置,其中WebUser为3(line 6), MobileUser为1(line 14)。
测试:
1)当模拟用户数为1时,测试log如下,可以发现这1个虚拟用户是作用在WebUser上的,而MobileUser上作用的虚拟用户数为0.所以,下面的log也没有MobileUser相关的任务被执行。
[2020-09-22 20:37:17,384] jasondeMacBook-Pro.local/INFO/locust.main: Starting Locust 1.1.1
[2020-09-22 20:37:23,794] jasondeMacBook-Pro.local/INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-09-22 20:37:23,794] jasondeMacBook-Pro.local/INFO/locust.runners: All users hatched: WebUser: 1, MobileUser: 0 (0 already running)
This is a web user, test time is: 2020-09-22 20:37:23
This is a web user, test time is: 2020-09-22 20:37:29
This is a web user, test time is: 2020-09-22 20:37:35
This is a web user, test time is: 2020-09-22 20:37:41
This is a web user, test time is: 2020-09-22 20:37:48
This is a web user, test time is: 2020-09-22 20:37:57
This is a web user, test time is: 2020-09-22 20:38:04
This is a web user, test time is: 2020-09-22 20:38:12
2)当模拟用户数为2时,测试log如下,发现这2个用户都是作用在WebUser上的。
[2020-09-22 21:11:42,893] jasondeMacBook-Pro.local/INFO/locust.main: Starting web interface at http://:8089
[2020-09-22 21:11:42,899] jasondeMacBook-Pro.local/INFO/locust.main: Starting Locust 1.1.1
[2020-09-22 21:11:49,142] jasondeMacBook-Pro.local/INFO/locust.runners: Hatching and swarming 2 users at the rate 1 users/s (0 users already running)...
This is a web user, test time is: 2020-09-22 21:11:49
[2020-09-22 21:11:50,147] jasondeMacBook-Pro.local/INFO/locust.runners: All users hatched: WebUser: 2, MobileUser: 0 (0 already running)
This is a web user, test time is: 2020-09-22 21:11:50
This is a web user, test time is: 2020-09-22 21:11:57
This is a web user, test time is: 2020-09-22 21:11:57
3)当模拟用户数为4时,测试log如下,发现有3个用户作用在WebUser,1个用户作用在MobileUser上。
[2020-09-22 21:13:24,883] jasondeMacBook-Pro.local/INFO/locust.main: Starting web interface at http://:8089
[2020-09-22 21:13:24,892] jasondeMacBook-Pro.local/INFO/locust.main: Starting Locust 1.1.1
[2020-09-22 21:13:29,896] jasondeMacBook-Pro.local/INFO/locust.runners: Hatching and swarming 4 users at the rate 1 users/s (0 users already running)...
This is a web user, test time is: 2020-09-22 21:13:29
This is a web user, test time is: 2020-09-22 21:13:30
This is a web user, test time is: 2020-09-22 21:13:31
[2020-09-22 21:13:32,899] jasondeMacBook-Pro.local/INFO/locust.runners: All users hatched: WebUser: 3, MobileUser: 1 (0 already running)
This is a mobile user, test time is: 2020-09-22 21:13:32
This is a web user, test time is: 2020-09-22 21:13:37
This is a web user, test time is: 2020-09-22 21:13:37
This is a web user, test time is: 2020-09-22 21:13:38
This is a mobile user, test time is: 2020-09-22 21:13:41
总结:
1)一个场景文件中可以定义多个用户类,方便对业务逻辑进行分类处理。并且可以为多个用户类设置权重。
2)如果用户类权重不足1人,则会被忽略,如测试第1,2中情况。
【转】Locust性能-零基础入门系列(3)-压力权重的更多相关文章
- 【转】Locust性能-零基础入门系列(1)-wait_time属性用法
本篇文章,从局部出发,利用一个简单的测试,来说明场景模拟的wait_time属性的用法.wait_time为什么要单独拎出来讲,是因为它主要有两种模式,而初学者对这两种模式,容易混淆.1) wait_ ...
- 【转】Locust性能-零基础入门系列(2) -重写wait_time
在虚拟模拟的时候,可能对等待时间有更高的要求,比如假如有这么一个场景要求:某任务要求每被执行1次,那么下次的等待时间就1秒钟.这种情况,是可以实现的,这也就体现了Locust的灵活性.可编程性,很多比 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...
- 【JAVA零基础入门系列】Day4 变量与常量
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- 【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
- 【JAVA零基础入门系列】Day8 Java的控制流程
什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...
- 【JAVA零基础入门系列】Day9 Java中的那个大数值
什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...
随机推荐
- hook框架-frida简单使用模板以及frida相关接口
一目录结构 ├── test.py #py脚本 └── test.js #js脚本 一.py脚本 test.py import frida import sys #连接设备app dev=frida. ...
- MAC安装Navicat Premiun12
链接地址:https://blog.csdn.net/wenyicodedog/article/details/97970154
- N皇后问题的二进制优化详细思路
题目啊常规解法(DFS)在此就不赘述了... 直接进入正题. 众所周知,N皇后是NP完全类问题,n稍微大了点求解过程就会变得很长. 算法方面很难再有质的效率突破,但这不妨在其他细节上下下功夫. 揆诸常 ...
- foreach循環體控制
通常情況下,在程式中的cursor定義之前,整合了l_sql變量后,轉化sql語句時,通過檢查STATUS的值來判斷sql語句是否有錯誤. 語句如: if STATUS th ...
- 为什么网站URL需要设置为静态化
http://www.wocaoseo.com/thread-95-1-1.html 为什么网站URL需要静态化?网站url静态化的好处是什么?现在很多网站的链接都是静态规的链接,但是网站 ...
- 焦大:seo思维进化论(番外)
http://www.wocaoseo.com/thread-54-1-1.html 我已经在博客说了学seo研究算法是愚蠢的行为,但是很多人仍旧来问se的算法问题,其中最多的就是问TF-IDF算法, ...
- C语言如何动态分配二维数组
C语言如何动态分配二维数组(转载) 原文链接:https://www.cnblogs.com/0xWitch/p/9314621.html 使用malloc().free()函数进行动态分配,这两个函 ...
- MySQL 字符类型
字符类型 MySQL提供了多种关于字符存储的类型,但是在大多数情况下我们只使用char和varchar即可 类型 大小 用途 CHAR 0-255字节 定长字符串 VARCHAR 0-65535 字节 ...
- Pytest-allure 生成美观好看的测试报告
在我们使用pytest-allure生成测试报告时,需要分为以下几步来执行 1.pytest TestCal.py --alluredir=/tmp/my_allure_results[这一步,是设置 ...
- Just an Old Puzzle(2019多校1007)
Problem Description You are given a 4 × 4 grid, which consists of 15 number cells and an empty cell. ...