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 ...
随机推荐
- Spring Boot☞ 使用freemarker模板引擎渲染web视图
效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import ...
- AngularJS基本使用
简介 AngularJS是Google开源的前端JS结构化框架 Angular关注的是动态展示页面数据, 并与用户进行交互.其主体不再是DOM,而是页面中的动态数据 AngularJS特性(优点) 双 ...
- JS中的唯一容器:数组
JS中的唯一容器:数组 一.什么类型的数据都可以存储 二. 定义的方式有两种 1 . var arra=[];var arra=[“a”,“b”,"c"]; 2.v ...
- ACM 超级楼梯 发工资
超级楼梯 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M( ...
- 深入理解java虚拟机(九)类加载器以及双亲委派模型
虚拟机把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让程序自己决定如何去获取所需要的类.实现这个动作的代码模块称为“类加载器”. 类与类加载器 任 ...
- Android-bindService远程服务启动其他应用的Activity
Service2应用,在AndroidManifest.xml文件中对外暴露MyService2服务: <!-- 代表在应用程序里,当需要该service时,会自动创建新的进程. android ...
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- RobotFramework与Jenkins集成发送邮件
转: A. 目标:实现RobotFramework的脚本定时自动执行,执行完后自动将结果发送到指定邮箱 B. 前提1. 配置好Robot Framework的环境,脚本可以正常运行 2. ...
- unit vs2017基于nunit framework创建单元测试
unit vs2017基于nunit framework创建单元测试 一.简叙: 单元测试大型项目中是必备的,所以不可忽视,一个项目的成败就看是否有单元测试,对后期的扩展维护都带来了便利. 二.安装 ...
- Android 增量更新研究
Android 增量更新实例(Smart App Updates) http://blog.csdn.net/duguang77/article/details/17676797 Android AP ...