本篇文章,从局部出发,利用一个简单的测试,来说明场景模拟的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. 蓝牙RFCOMM通信

    最近需要在某个开发板上面通过蓝牙和手机蓝牙连接,并通过RFCOMM通信.还没有做过蓝牙RFCOMM相关工作,因此先在linux PC上面调试一下流程,并在此记录调试过程. 一.说明 RFCOMM协议基 ...

  2. 为什么 max() 应该写成 b < a ? a : b 呢?

    在 < C++ Templates 2nd Edition >Chapter 1 中,作者将 max() 模板定义如下: template <typename T> T max ...

  3. Linux kernel 模块 hello 测试

    原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /* ...

  4. 使用dd命令快速生成大文件或者小文件

    使用dd命令快速生成大文件或者小文件 需求场景: 在程序的测试中有些场景需要大量的小文件或者几个比较大的文件,而在我们的文件系统里一时无法找到那么多或者那么大的文件,此时linux的dd命令就能快速的 ...

  5. 教育行业CRM项目开发

    项目开发流程 需求分析 存储所有的客户咨询信息    避免重复数据    客户多次跟踪记录    客户来源分析.成单率分析    每个销售只能修改自己的客户信息    报名流程开发        班级 ...

  6. java基本数据类型总结 类型转换 final关键字的用法

    java基本数据类型总结 Java数据类型总结 数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的. ...

  7. 在JAVASCRIPT中,为什么document.getElementById不可以再全局(函数外)使用?

    今天在使用JavaScript使用document.ElementById("ID")的时候,发现var x = document.getElementById("chi ...

  8. WebRTC的VAD 过程解读

    摘要: 在上一篇的文档中,分析unimrcp中vad算法的诸多弊端,但是有没有一种更好的算法来取代呢.目前有两种方式 1. GMM   2. DNN. 其中鼎鼎大名的WebRTC VAD就是采用了GM ...

  9. Java/后端学习路线

    点赞再看,养成习惯,微信搜一搜[三太子敖丙]关注这个喜欢写情怀的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系 ...

  10. Angular(二) - 组件Component

    1. 组件Component示例 2. Component常用的几个选项 3. Component全部的选项 3.1 继承自@Directive装饰器的选项 3.2 @Component自己特有的选项 ...