Locust 类的使用
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 类的使用的更多相关文章
- 性能测试工具Locust的使用----TaskSet类~~task任务嵌套
内容来自网络 http://blog.sina.com.cn/s/blog_a7ace3d80102w9r0.html TaskSet类 正如字面意思,TaskSet类定义了每个用户的任务集合,测试任 ...
- 性能测试工具Locust
An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...
- Python Locust性能测试框架实践
[本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...
- Locust性能测试框架,从入门到精通
1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁.轻量.高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力. 主要特点如下: 使用普通的P ...
- 性能测试工具Locust的使用
一.写在前面 官网:https://www.locust.io/ 官方使用文档:https://docs.locust.io/en/latest/ 大并发量测试时,建议在linux系统下进行. 二.L ...
- Locust性能测试学习总结
Locust学习总结分享 简介: Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学.它的主要思想就是模拟一群用户将访问你的网站.每 ...
- Python3中性能测试工具Locust安装使用
Locust安装使用: 安装: python3中 ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help ...
- python locust 性能测试:HOOKS<钩子方法>
为locust中不同类型的事件,提供的钩子方法: from locust import TaskSet, task, events, Locust from locust.clients import ...
- python locust 性能测试:嵌套
TaskSet类和TaskSequence类可用于嵌套<可以在TaskSequences中嵌套TaskSets,反之亦然>: from locust import TaskSet, tas ...
随机推荐
- 一起做RGB-D SLAM (3)
第三讲 特征提取与配准 2016.11 更新 把原文的SIFT替换成了ORB,这样你可以在没有nonfree模块下使用本程序了. OpenCV可以使用 apt-get install libopenc ...
- POC索引
最近在看窗口函数,接触到了POC索引,所以借此机会好好研究一下索引. 一般支持窗口函数的索引指南都遵循POC的概念,也就是Partitioning(分区).Ordering(排序)和Covering( ...
- CodeForces 681D Gifts by the List (树上DFS)
题意:一个家庭聚会,每个人都想送出礼物,送礼规则是, 一个人,先看名单列表,发现第一个祖先 就会送给他礼物,然后就不送了,如果他没找到礼物 他会伤心的离开聚会!告诉你m个祖先关系, 和每个人想给谁送! ...
- 迟到的成果——Qt 小学生出题神器设计
Github传送门 Part 1.成果展示及感想 原先一直有个疑惑的问题困扰着对Qt一无所知的我:如何才能使得C++代码在Qt上运行.然而这种困惑在进一步对Qt的了解过程中都得到了慢慢的解决,逐渐有一 ...
- 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置
切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...
- APUE(4)---文件和目录 (1)
一.引言 上一章执行I/O的基本函数(打开文件.读文件和写文件),本章将描述文件系统的其他特征和文件的性质,我们将从stat函数开始,并逐个说明stat结构的每一个成员以了解文件的所有属性.在此过程中 ...
- linux 权限机制
系统每个文件都拥有特定的权限,所属用户及所属组,通过这样的机制限制哪些用户.哪些组可以对特定文件进行什么样的操作,一般分为读.写.执行三种权限. 每个进程都是以某个用户的身份运行,所以进程的权限与该用 ...
- memcached整理の基本使用
memcached 客户端与服务器端的通信比较简单,使用的基于文本的协议,而不是二进制协议.(http 协议也是这样), 因此我们通过telnet 即可与memcached 作交互. # 格式teln ...
- delphi添加.ocx后缀的控件
在delphi ocx控件的安装步骤:1.第一步: 使用过Activex的人都知道,Activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的Activex控件注册,但如果拿到 ...
- Android-ContentProvider-UriMatcher
注意:在ContentProvider里面写对数据库增删改查的时候,千万不能 db.close(); cursor.close(); 等操作,不然其他应用访问不到数据,也没有必要写isOpen(); ...