本篇文章,从局部出发,利用一个简单的测试,来说明场景模拟的wait_time属性的用法。wait_time为什么要单独拎出来讲,是因为它主要有两种模式,而初学者对这两种模式,容易混淆。

1)

wait_time = constant(3)

wait_time = between(5,15)

第一种模式,可以使用以上2种模式,他们的用法都是一致的,都是当任务完成之后,停顿3秒或者是5-15秒之间选择一个停顿的时间作为停顿的时间。其两种方式的源码如下:

def between(min_wait, max_wait):
"""
Returns a function that will return a random number between min_wait and max_wait. Example:: class MyUser(User):
# wait between 3.0 and 10.5 seconds after each task
wait_time = between(3.0, 10.5)
"""
return lambda instance: min_wait + random.random() * (max_wait - min_wait)
def constant(wait_time):
"""
Returns a function that just returns the number specified by the wait_time argument Example:: class MyUser(User):
wait_time = constant(3)
"""
return lambda instance: wait_time
 

第二种模式,如下:

 wait_time = constant_pacing(1)

和第一种模式就有很大的不同了。它是计时性的,也就是每1秒钟触发执行一次任务,而不管任务有没有执行完。源码如下:

def constant_pacing(wait_time):
"""
Returns a function that will track the run time of the tasks, and for each time it's
called it will return a wait time that will try to make the total time between task
execution equal to the time specified by the wait_time argument. In the following example the task will always be executed once every second, no matter
the task execution time:: class MyUser(User):
wait_time = constant_pacing(1)
@task
def my_task(self):
time.sleep(random.random()) If a task execution exceeds the specified wait_time, the wait will be 0 before starting
the next task.
"""
 

所以大家可以在实际的工作中根据需求来自行选择。但是前提是大家要对这些选项和用法掌握,避免不清楚而导致工作失误。

下面是一个简单的locust file 代码讲解,算是一个很基础的一个入门。

from locust import User, task,between,constant,constant_pacing

class MyUser(User):
@task
def my_task(self):
print("executing my_task")
#wait_time = between(5,15)
#wait_time = constant(3)
wait_time = constant_pacing(1)

说明:

line 1: 导入相关的包。

line 3: 定义一个用户类MyUser,这个类要继承Locust User类

line 5: 定义一个任务方法

line 4: 添加@task 修饰符, 如果不添加,那么任务方法就不会被执行。

line 7/8/9:是上面已经讲过的,关于wait_time属性的设置,有2大类方式,这里就不再赘述。

如果安装以上的场景定义,那么执行的结果就是,每隔1秒钟就会执行1次my_task任务。

本文转自公众号TimTest,原文地址:https://mp.weixin.qq.com/s?__biz=MzI2OTYwMDc0MQ==&mid=2247483746&idx=1&sn=04c289733953e8745a909d2678038ff6&chksm=eadc93e8ddab1afe55d591096b4d59aaf7fe8a9da43a182a859c7b30f81a8cb63bf619e3fa91&token=2021082705&lang=zh_CN#rd

【转】Locust性能-零基础入门系列(1)-wait_time属性用法的更多相关文章

  1. 【转】Locust性能-零基础入门系列(3)-压力权重

    本文将继续对Locust性能测试进行持续讲解,主要是讲解虚拟用户数分配和权重的关系.在locust file中进行多用户类的实现和操作.我们这次先上完整的代码: from locust import ...

  2. 【转】Locust性能-零基础入门系列(2) -重写wait_time

    在虚拟模拟的时候,可能对等待时间有更高的要求,比如假如有这么一个场景要求:某任务要求每被执行1次,那么下次的等待时间就1秒钟.这种情况,是可以实现的,这也就体现了Locust的灵活性.可编程性,很多比 ...

  3. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

  4. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

  5. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  6. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  7. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  8. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  9. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...

随机推荐

  1. J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...

  2. 在string.replace中使用具名组匹配

    let reg = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/; let re = '2015-01-02'. r ...

  3. keepalived的vrrp多播报文被禁,导致VIP同时位于多个机器上

    keepalived的vrrp多播报文被禁,导致VIP同时位于多个机器上 查看man keepalived.conf,VRRP instances中给出了单播的设置方法,添加unicast_peer即 ...

  4. 团队作业4:第二篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...

  5. KNN手写数字识别

    import numpy as np import matplotlib .pyplot as plt from sklearn.neighbors import KNeighborsClassifi ...

  6. Qt 如何使窗体初始最大化

    Qt 如何使窗体初始最大化 使用以下函数即可解决: void QWidget::setWindowState ( Qt::WindowStateswindowState ) 这样的函数,通过它可以设置 ...

  7. js实现csv下载

    var TableDatas  = '数据源';function getCSV(){ if(this.TableDatas.length === 0){ alert("没有数据呀呀呀呀!&q ...

  8. Number(),parseInt()和parseFloat

    一.Number() 1.如果是传进去数字值,只进行传入和传出,前置为  0x  的数字 和 前置  为0且不包含数字8,9的数字  ,会被转为十进制,对于其他的数字来说通常没有变化. 2.如果传进去 ...

  9. laravel发送邮件配置

    1.设置发送方,即邮件服务器,可以使用163邮箱,设置smtp,开启后获取授权码 2.在env文件配置 MAIL_DRIVER=smtpMAIL_HOST=smtp.163.com  //邮箱服务器M ...

  10. 【Maven】Mac操作系统下安装配置maven环境变量

    1.下载maven 下载地址:http://maven.apache.org/download.cgi 2.解压设置maven本地地址解压后 我放在 /Users/david/developer/ap ...