内容来自网络

http://blog.sina.com.cn/s/blog_a7ace3d80102w9r0.html

TaskSet类

正如字面意思,TaskSet类定义了每个用户的任务集合,测试任务开始后,每个Locust用户会从TaskSet中随机挑选(如果定义了任务间的权重关系,那么就是按照权重关系随机挑选)一个任务执行,然后随机等待Locust类中定义的min_wait和max_wait(如果TaskSet类中也定义了min_wait或者max_wait,按照TaskSet中的为准)之间的一段时间,执行下一个任务。

定义TaskSet中的任务有多种方式,比如使用@task修饰符、使用tasks属性。 

 from locust import Locust, TaskSet, task

 class UserTask(TaskSet):
@task(1)
def job1(self):
print 'This is job 1' @task(2)
def job2(self):
print 'This is job 2' class User(Locust):
task_set = UserTask

TaskSet的定义是可以嵌套的,因为考虑到现实中有很多任务其实也是有嵌套结构的,比如:

 from locust import Locust, TaskSet, task

 class UserTask(TaskSet):
@task(2)
class stay(TaskSet):
@task(3)
def readBook(self):
print 'I am reading a book.' @task(7)
def listenMusic(self):
print 'I am listening to music.' @task(1)
def logOut(self):
self.interrupt() @task(1)
def leave(self):
print 'I don not like this page.' class User(Locust):
task_set = UserTask

上面的例子中,要么用户不喜欢这个网页直接离开,要么喜欢就留下来,留下来的话,可以选择看书、听音乐、或者离开。

在stay这个类中,对interrupt()方法的调用是非常重要的,这可以让一个用户跳出stay这个类有机会执行leave这个任务,否则他一旦进入stay任务就会一直在看书或者听音乐而难以自拔。

除了使用@task修饰符完成嵌套,也可以使用tasks属性,效果是一样的:

 from locust import Locust, TaskSet, task

 class stay(TaskSet):
@task(3)
def readBook(self):
print 'I am reading a book.' @task(7)
def listenMusic(self):
print 'I am listening to music.' @task(1)
def logOut(self):
self.interrupt() class UserTask(TaskSet):
tasks = {stay:2} @task(1)
def leave(self):
print 'I don not like this page.' class User(Locust):
task_set = UserTask

TaskSet类还有其他的有用方法:

  • on_start()函数 
    定义每个locust用户进入TaskSet之后开始做的第一件事。
  • locust属性 
    指向每个TaskSet所属的loucst用户实例。
  • parent属性 
    指向每个TaskSet所属的父类TaskSet,用在TaskSet有嵌套的情况,如果调用parent的TaskSet是最顶层的,则返回它所属的locust用户实例。
  • client属性 
    指向TaskSet所属的父HttpLocust类的client属性,self.client与self.locust.client效果是一样的。如果TaskSet所属的父类是个Locust类,则没有这个client属性。
  • interrupt(reschedule=True) 
    顶层的TaskSet(即被绑定到某个Locust类的task_set的第一层TaskSet)不能调用这个方法。reschedule置为True时,从被嵌套任务出来马上选择新任务执行,如果置为False,从被嵌套任务出来后,随机等待min_wait和max_wait之间的一段时间,再选择新任务执行。
  • schedule_task(task_callable, args=None, kwargs=None, first=False) 
    将一个可调用的对象task_callable添加进Locust对象(注意是针对某个Locust实例,而不是所有的Locust实例)的任务选择队列,其中args和kwargs是传递给可调用对象的参数,如果first置为True,则将其加到队首。

性能测试工具Locust的使用----TaskSet类~~task任务嵌套的更多相关文章

  1. 性能测试工具Locust,一个开源性能测试工具

    性能测试工具Locust,一个开源性能测试工具使用Python代码来定义用户行为.用它可以模拟百万计的并发用户访问你的系统.1.它与目前主流的LoadRunner和Jmeter玩法都不一样.2.它完全 ...

  2. 性能测试工具Locust

    An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...

  3. 性能测试工具Locust的使用

    一.写在前面 官网:https://www.locust.io/ 官方使用文档:https://docs.locust.io/en/latest/ 大并发量测试时,建议在linux系统下进行. 二.L ...

  4. Python3中性能测试工具Locust安装使用

    Locust安装使用: 安装: python3中           ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help  ...

  5. 开源性能测试工具Locust使用篇(二)

    那如何理解Locust和TaskSet这两个类呢? class HttpLocust(Locust) 在Locust类中,具有一个client属性,它对应着虚拟用户作为客户端所具备的请求能力,也就是我 ...

  6. 性能测试工具Locust的介绍和使用

    内容来自网络 https://www.w3xue.com/exp/article/20191/16707.html https://blog.csdn.net/qq_36255988/article/ ...

  7. 基于python的性能测试工具–locust

    现在有很多的性能测试工具,比如说我们熟悉的loadrunner.jmeter.ab.webbench等等,这些工具如果对一个没用过的朋友来说,学习起来比较不容易,但是如果你能看懂python代码,会写 ...

  8. 性能测试进阶:(一)性能测试工具Locust

    An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...

  9. 开源性能测试工具Locust使用篇(三)

    脚本增强 面对较复杂的测试场景,我们可能还是会感觉无从下手:例如,很多时候脚本需要做关联或参数化处理,Locust中就不知道怎么实现了.可能也是这方面的原因,感觉难以将Locust应用到实际的性能测试 ...

随机推荐

  1. 译文:TypeScript新手指南

    你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行.TypeS ...

  2. NormalMapping

    [NormalMapping] 法线贴图内的数据是法线,高度贴图内的数据是高度,不是一个东西.在ShaderLab中,UnpackNormal()分析的是法线贴图(注意不是高度贴图). 可以看到,在G ...

  3. Redhat Cluster Suite原理介绍

      RedHat Cluster Suite简称RHCS,是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,基于RHCS可以搭建高可用性集群.负载均衡集群.存储集群和高性能 ...

  4. RTX二次开发笔记2

    问题一:关于DLL文件的引用 在安装文件夹内 APIObject.dll==>RTXSAPI.dll 服务器API接口 RTXCAPI.DLL ==> 客户端API接口 问题二:RTX二次 ...

  5. 巧用渐变色打造精致移动端APP

    渐变色是指某个物体的颜色从明到暗,或由深转浅,或是从一个色彩缓慢过渡到另一个色彩,充满变幻无穷的神秘浪漫气息的颜色.在扁平化设计刚刚兴起时,渐变是设计师们避之不及的设计手法.然而自从Instagram ...

  6. 1028 Web Navigation

    题目链接: http://poj.org/problem?id=1028 题意: 模拟浏览器的前进/后退/访问/退出 的四个操作. 输出当前访问的URL或者Ignore(如果不能前进/后退). 分析: ...

  7. ubuntu下学习linux

    ---恢复内容开始--- 查看当前正在运行的进程(ps命令, grep 搜索命令) ps -ef # -e 显示所有进程,环境变量 -f 全格式 也可以用: ps -e -f # 显示所有关于java ...

  8. clickonce发布winform必备组件

    ClickOnce 发布,在系统必备中勾选了 .NET Framework 4,并选择了"从与我的应用程序相同的位置下载系统必备组件"时,执行发布,会提示缺少很多文件 使用 Pac ...

  9. vs2015 debugger,unable to attach to application iisexpress.exe

    vs2015 unable to attach to application iisexpress.exe,没有可用的数据了 搞了一天也没解决...

  10. 设置emacs启动窗口的两种方法

    1. 设置位置和大小 ;;设置窗口位置为屏库左上角(0,0) (set-frame-position (selected-frame) 0 0) ;;设置宽和高 (set-frame-width (s ...