Locust系列-Locust入门
一 简介:
1、locust作为一款性能测试工具,没有单独的ui界面,可以说是python下的一些库的集成
locust完全基于python作为编程语言,采用pure python描述测试脚本,其中的http请求也是完全基于Requests库,除了HTTP/HTTPS协议,locust也可以测其他协议的系统,只需要采用python调用对应的库进行请求描述即可,可以说python对应的库还是非常齐全的。
2、与jmeter相比较而言,locust更加的轻量化,采用的是不同于jmeter中进程和线程的处理机制(协程[微线程]),有效避免了系统的资源调度,由此可以大幅度的提高单击系统的并发能力
3、Github地址:
https://github.com/locustio/locust
注:如果想查看python下依赖了哪些库的话,可以进入github,点击setup.py进入查看
4、locust组成模块(所依赖的库)[gevent]是python下实现协程的一个第三方库,能够使系统获取极高的并发性能(locust基础模块)
简而言之,它的特点就是协程,web管理工具,超级好用。
二 如何使用呢?
第一步: 安装
安装locust,在终端中执行: pip install locustio
Locust有六个依赖的python模块
1.gevent:在Python中实现协程的第三方库。协程又叫微线程Corouine。使用gevent可以获取极高的并发能力;
2.flask:Python的一个web开发框架,和django相当;
3.requests:支持http/https访问的库;
4.msgpack-python:一种快速、紧凑的二进制序列化格式,使用与类似json的数据;
5.six:提供了一些简单的工具封装Python2和Python3 之间的差异;
6.pyzmq:安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)
安装结束了之后我们就开启Locust之旅了。
第二步: 使用
如何快速的创建一个LocustDemo。
# -*- coding: utf-8 -*-
from random import random
from locust import HttpLocust, task,TaskSet
import os
# @task python中的装饰器,告诉下面的方法是一个任务,任务就是一个接口请求
#要用这个装饰器,需要头部引入 从locust中,引入 task
class TestCaseDemo(TaskSet):
#相当于setup
def on_start(self):
pass
@task(1) # 权重
def auth(self): # 方法名, 发起授权接口
url = "/api/qftest/auth"
resp = self.client.post(url)
self.token = resp.json()['token']
if resp.status_code == 200:
resp.success()
else:
resp.failure("auth接口失败")
@task(1)
def register(self): # 发起注册接口
# #定义请求头为类变量,, 将token添加到请求头中,这样其他任务也可以调用该变量
self.headers = {"Content-Type": "application/json","token": self.token}
url1 = "/api/qftest/register"
self.username = "qf_" + str(random.randint(1000, 10000))
payload = {'username': 'self.username','passwd': 'qf123456.', 'code': '123456'}
resp = self.client.post(url1, json=payload, headers=self.headers)
if resp.status_code == 200:
print("success")
else:
resp.failure("register接口失败")
@task(1)
def login(self): # 发起登录接口
url = "/api/qftest/login"
payload = {'username': self.username, 'passwd': 'qf123456'}
resp = self.client.post(url, json=payload, headers=self.headers)
self.userid = resp.json()["userid"]
if resp.status_code == 200:
print("success")
else:
resp.failure("login接口失败")
@task(1)
def getUserInfo(self): # 发起获取用户信息接口
url = "/api/qftest/getUserInfo"
payload = {"id": self.userid}
resp = self.client.post(url, json=payload, headers=self.headers)
if resp.status_code == 200:
print("success")
else:
resp.failure("getUserInfo接口失败")
@task(1)
def logout(self): # 发起退出接口
url = "/api/qftest/logout"
resp = self.client.post(url, headers=self.headers)
if resp.status_code == 200:
print("success")
else:
resp.failure("logout接口失败")
#相当于teardown
def on_stop(self):
pass
class UserRun(HttpLocust):
task_set = TestCaseDemo # 定义固定的 task_set 指定前面的任务类名称
min_wait = 3000 # 单位为毫秒
max_wait = 6000 # 单位为毫秒
if __name__ == "__main__":
os.system("locust -f test_locust.py--host=http://192.168.xx.xx:8080")
执行上面编写的脚本后,本地打开localhost:8089或127.0.0.1:8089即能正常访问locust的web UI界面,设置并发用户数,执行压测。
三 无web-UI模式
在没有Web UI的情况下运行locust - 可以打开cmd 通过使用--no-web参数,-c指定要生成的Locust用户数 -r每秒启动虚拟用户数
先cd到脚本当前目录,然后执行指令:
locust -flocustfile.py --host=[http://192.168.x.xx:80](http://192.168.x.xx/) --no-web -c1 -r 1
设置运行时间
如果要指定测试的运行时间,可以使用--run-time
> locust-f locustfile.py --host=[http://192.168.x.xx:80](http://192.168.x.xx/) --no-web-c 1 -r 1 --run-time 10
或使用-t参数
> locust-f locustfile.py --host=[http://192.168.x.xx:80](http://192.168.x.xx/) --no-web-c 1 -r 1 -t 10
运行时间单位,如果不写单位默认是s,也可以指定小时h,分钟m,可以参考以下时间格式
* 10s 10秒(不写单位默认s)
* 5m 表示5分钟
* 1h 1小时
* 1m30s 1分30秒
想要学习更多干货技巧扫码免费领取哦!
Locust系列-Locust入门相关推荐
- SpringBoot 2.0 系列001 -- 入门介绍以及相关概念
为什么80%的码农都做不了架构师?>>> SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://proje ...
- 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储
目录 1. 系列文章 2. 项目描述及效果展示 3. 阅读本文需要掌握的知识 4. 源码 5. 运行程序 6. 技术交流 1. 系列文章 [IPFS + 区块链 系列] 入门篇 - IPFS环境配置 ...
- IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (中篇)-js-ipfs-api - 图片上传到IPFS以及下载
目录 1. 项目效果图 2. 创建React项目 3. 完成UI逻辑 4. 安装ipfs-api 5. App.js导入IPFS 6. 实现上传图片到IPFS的Promise函数 7. 上传图片到IP ...
- IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (上篇)-js-ipfs-api
目录 1. 内容简介 2. IPFS-HTTP效果图 3. 实现步骤 3.1 安装create-react-app 3.2 React项目创建 3.3 运行React项目 3.4 浏览项目 3.5 安 ...
- Python系列之入门篇——HDFS
Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...
- c# hdf5 写string_Pandas系列之入门篇——HDF5
Python系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响,压缩效率越高,查询效率越低.pandas ...
- .NET 4 并行(多核)编程系列之一入门介绍
.NET 4 并行(多核)编程系列之一入门介绍 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下: 1. 并行编程和多线程编程的区别. ...
- QCC514x-QCC304x(headset)系列(入门篇)之1.1-QCC3044之基本介绍
<下一节> 查看本文全部文章请点击: QCC514x-QCC304x(Headset)系列从入门到精通开发教程目录 目录 1.架构 2.技术特性 3.技术参数 蓝牙 CPU DSP 语音服 ...
- Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建
By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...
最新文章
- 自定义DateField,带时分秒
- 工作总结 Rezor 里面的一些小知识----自定义类型 放在标签值中 会直接跳过去...
- C#完美任意设置webBrowser框架默认的IE内核版本
- 化验室计算机管理制度,实验室试剂管理制度
- 利用html5看雪花飘落的效果
- FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析
- 嵌入式通过绑定实现双网卡冗余
- 学习笔记 ---- 设计模式之观察者模式
- Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
- 基于python实现细胞自动机
- 阿里矢量图库 iconfont 引入项目使用方法
- 实验二 —— 串口通信
- 【云存储】IOPS概念及测试方法
- java布道师_我和 Spring 技术布道师的一天
- 【pytorch】|tensor grad
- OneNote中如何输入数学公式
- TDOA_CHAN三维定位(仅供参考)
- 网站备案流程[菜鸟必看],
- 【班级学生量化管理系统软件专业版】
- H3C交换机开启关闭端口及限速
热门文章
- 网络安全基础——ARP欺骗
- 服务器系统进程,常见系统进程大全(新手必看)
- matlab 多边形 自相交,怎么判断多边形是否自相交的算法
- Language Modeling with Gated Convolutional Networks ( GLU )理解
- 一步一步教你写股票走势图——分时图二(自定义xy轴)
- 『互联网架构』软件架构-git服务搭建与使用(四)
- Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码
- vuejs项目纯js导出word、在线下载富文本内容或者网页另存为word文件
- Oracle数据增删改查基本命令
- Mycat--介绍/官网等