HttpLocust类

可定义多个HttpLocust类,即多个用户可执行不同的任务或者相同的任务,但是执行频率不一样,用weight进行约定。

# coding:utf-8
from locust import HttpLocust, TaskSet, task
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) class UserTask1(TaskSet):
@task
def task1(self):
self.client.get("/", headers=header, verify=False) class UserTask2(TaskSet):
@task
def task2(self):
self.client.get("/belle-ls/", verify=False) class UserOne(HttpLocust):
weight = 1
task_set = UserTask1 class UserTwo(HttpLocust):
weight = 2
task_set = UserTask2

终端命令:

 $ locust -f locustDemo2.py UserOne UserTwo --host=https://www.cnblogs.com
[2019-03-07 14:55:49,299] LiuShuangdeiMac.local/INFO/locust.main: Starting web monitor at *:8089
[2019-03-07 14:55:49,300] LiuShuangdeiMac.local/INFO/locust.main: Starting Locust 0.9.0
[2019-03-07 14:55:58,657] LiuShuangdeiMac.local/INFO/locust.runners: Hatching and swarming 10 clients at the rate 10 clients/s...
[2019-03-07 14:55:59,678] LiuShuangdeiMac.local/INFO/locust.runners: All locusts hatched: UserTwo: 7, UserOne: 3

运行结果如下,UserTwo 的执行频率是UserOne的两倍多

TaskSet类:执行频率的约定及嵌套

1. task修饰符 @task or @task(1)  1为权重,权重越高,执行比例越大

2. taskSet嵌套,需要用 interrupt()跳出

 写法1:

# coding:utf-8

from locust import HttpLocust, TaskSet, task
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class UserTask(TaskSet):
@task(2)
class stayMe(TaskSet):
@task(2)
def MyHome(self):
self.client.get("/belle-ls/", verify=False) @task(4)
def MyCote(self):
self.client.get("/belle-ls/category/1412671.html", verify=False) @task(1)
def Out(self):
self.interrupt() #跳出当前TaskSet类,才有机会执行其他行为 @task(1)
def BlogHome(self):
self.client.get("/", verify=False)
class User(HttpLocust):
task_set = UserTask

写法2:

class stayMe(TaskSet):
@task(2)
def MyHome(self):
self.client.get("/belle-ls/", verify=False) @task(4)
def MyCote(self):
     self.client.get("/belle-ls/category/1412671.html", verify=False) @task(1)
def Out(self):
self.interrupt() class UserTask(TaskSet):
tasks= {stayMe:2}
@task(1)
def BlogHome(self):self.client.get("/", verify=False)class User(HttpLocust):
task_set = UserTask

ResponseContextManager类:

class UserTask(TaskSet):
@task(1)
def BlogHome(self):
with self.client.get("/", headers = header, catch_response = True, verify = False) as response:
if response.status_code == 200:
response.failure('Failed!')
else:
response.success() class User(HttpLocust):
task_set = UserTask

ResponseContextManger类是Response类的子类,多了两个failure()和success()方法。

上面的例子:使用with语句及catch_response参数可以截获原始响应,把所有status_code是200的响应都当做失败响应。这里success()和failure(str)的调用会体现在结果的统计上。

合并请求:

比如进入博客分类,其实属于一条测试用例,但是由于参数的不同,会再测试结果中显示两行,比如:

https://www.cnblogs.com/belle-ls/category/1412671.html

https://www.cnblogs.com/belle-ls/category/1411809.html

如何合并呢?可以在get请求参数中加个name参数来将统计叠加在一起name也可以用来对Name显示为路径进行重命名

class UserTask(TaskSet):
@task(1)
def BlogHome(self):
self.client.get("/belle-ls/category/1412671.html", headers=header, verify=False, name = "category")
self.client.get("/belle-ls/category/1411809.html", headers=header, verify=False, name = "category") class User(HttpLocust):
task_set = UserTask

效果:

参考文章:https://blog.csdn.net/a464057216/article/details/48394213

Locust 类的使用的更多相关文章

  1. 性能测试工具Locust的使用----TaskSet类~~task任务嵌套

    内容来自网络 http://blog.sina.com.cn/s/blog_a7ace3d80102w9r0.html TaskSet类 正如字面意思,TaskSet类定义了每个用户的任务集合,测试任 ...

  2. 性能测试工具Locust

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

  3. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  4. Locust性能测试框架,从入门到精通

    1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁.轻量.高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力. 主要特点如下: 使用普通的P ...

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

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

  6. Locust性能测试学习总结

    Locust学习总结分享 简介: Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学.它的主要思想就是模拟一群用户将访问你的网站.每 ...

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

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

  8. python locust 性能测试:HOOKS<钩子方法>

    为locust中不同类型的事件,提供的钩子方法: from locust import TaskSet, task, events, Locust from locust.clients import ...

  9. python locust 性能测试:嵌套

    TaskSet类和TaskSequence类可用于嵌套<可以在TaskSequences中嵌套TaskSets,反之亦然>: from locust import TaskSet, tas ...

随机推荐

  1. AlwaysOn的数据同步原理

    摘抄自<SQL Server 2012实施与管理实战指南> 镜像的工作原理: 那么主体数据库和镜像数据库是如何同步数据的呢?SQL数据库中任何的数据变化都会先记录到事务日志中,然后才会真正 ...

  2. [GO]二进制文件的拷贝

    writestring的方式只适用于字符串的写入,对于十进制文件的写入只要使用write就可以了 package main import ( "os" "fmt" ...

  3. 深入理解Cookie和Session机制

    转载理解Cookie和Session机制 目录 Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存二进制图片设置Cookie的所有属性Coo ...

  4. https hsts 私密链接

    chrome强制转跳https,删除对某个域名的强制转跳即可 hrome的地址栏输入:chrome://net-internals/#hsts   在Delete domain下输入相对应的网址,不带 ...

  5. 敏捷开发之XP

    敏捷方法论有一个共同的特点,那就是都将矛头指向了“文档”,它们认为传统的软件工程方法文档量太“重”了,称为“重量级”方法,而相应的敏捷方法则是“轻量级”方法.正是因为“轻量级”感觉没有什么力量,不但不 ...

  6. SurfaceView实时绘图,视频流

  7. windows mobile 只能运行一个程序实例

    static class Program { [System.Runtime.InteropServices.DllImport("coredll.Dll", SetLastErr ...

  8. 【小梅哥FPGA进阶教程】第十四章 TFT屏显示图片

    十四.TFT屏显示图片 本文由杭电网友曾凯峰贡献,特此感谢 学习了小梅哥的TFT显示屏驱动设计后,想着在此基础上通过TFT屏显示一张图片,有了这个想法就开始动工了.首先想到是利用FPGA内部ROM存储 ...

  9. java学习(四)static静态变量 和this

    java中的this /* this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 注意:谁调用这个方法,在该方法内部的this就代表谁. this的场景: 解决局部变量隐藏成员变量 */ ...

  10. jquery.pagination参数释义

    参数名 参数说明 可选值 默认值callback 点击分页按钮的回调函数 函数 function(){return false;}current_page 初始化时选中的页码 数字 0items_pe ...