一 简介:

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 randomfrom locust import HttpLocust, task,TaskSetimport os

# @task python中的装饰器,告诉下面的方法是一个任务,任务就是一个接口请求

#要用这个装饰器,需要头部引入 从locust中,引入 task

class TestCaseDemo(TaskSet):#相当于setupdef 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接口失败")
#相当于teardowndef 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入门相关推荐

  1. SpringBoot 2.0 系列001 -- 入门介绍以及相关概念

    为什么80%的码农都做不了架构师?>>>    SpringBoot 2.0 系列001 -- 入门介绍以及相关概念 什么是SpringBoot? 项目地址:http://proje ...

  2. 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储

    目录 1. 系列文章 2. 项目描述及效果展示 3. 阅读本文需要掌握的知识 4. 源码 5. 运行程序 6. 技术交流 1. 系列文章 [IPFS + 区块链 系列] 入门篇 - IPFS环境配置 ...

  3. IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (中篇)-js-ipfs-api - 图片上传到IPFS以及下载

    目录 1. 项目效果图 2. 创建React项目 3. 完成UI逻辑 4. 安装ipfs-api 5. App.js导入IPFS 6. 实现上传图片到IPFS的Promise函数 7. 上传图片到IP ...

  4. 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 安 ...

  5. Python系列之入门篇——HDFS

    Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...

  6. c# hdf5 写string_Pandas系列之入门篇——HDF5

    Python系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响,压缩效率越高,查询效率越低.pandas ...

  7. .NET 4 并行(多核)编程系列之一入门介绍

    .NET 4 并行(多核)编程系列之一入门介绍 本系列文章将会对.NET 4中的并行编程技术(也称之为多核编程技术)以及应用作全面的介绍. 本篇文章的议题如下:   1. 并行编程和多线程编程的区别. ...

  8. QCC514x-QCC304x(headset)系列(入门篇)之1.1-QCC3044之基本介绍

    <下一节> 查看本文全部文章请点击: QCC514x-QCC304x(Headset)系列从入门到精通开发教程目录 目录 1.架构 2.技术特性 3.技术参数 蓝牙 CPU DSP 语音服 ...

  9. Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

最新文章

  1. 自定义DateField,带时分秒
  2. 工作总结 Rezor 里面的一些小知识----自定义类型 放在标签值中 会直接跳过去...
  3. C#完美任意设置webBrowser框架默认的IE内核版本
  4. 化验室计算机管理制度,实验室试剂管理制度
  5. 利用html5看雪花飘落的效果
  6. FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析
  7. 嵌入式通过绑定实现双网卡冗余
  8. 学习笔记 ---- 设计模式之观察者模式
  9. Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
  10. 基于python实现细胞自动机
  11. 阿里矢量图库 iconfont 引入项目使用方法
  12. 实验二 —— 串口通信
  13. 【云存储】IOPS概念及测试方法
  14. java布道师_我和 Spring 技术布道师的一天
  15. 【pytorch】|tensor grad
  16. OneNote中如何输入数学公式
  17. TDOA_CHAN三维定位(仅供参考)
  18. 网站备案流程[菜鸟必看],
  19. 【班级学生量化管理系统软件专业版】
  20. H3C交换机开启关闭端口及限速

热门文章

  1. 网络安全基础——ARP欺骗
  2. 服务器系统进程,常见系统进程大全(新手必看)
  3. matlab 多边形 自相交,怎么判断多边形是否自相交的算法
  4. Language Modeling with Gated Convolutional Networks ( GLU )理解
  5. 一步一步教你写股票走势图——分时图二(自定义xy轴)
  6. 『互联网架构』软件架构-git服务搭建与使用(四)
  7. Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码
  8. vuejs项目纯js导出word、在线下载富文本内容或者网页另存为word文件
  9. Oracle数据增删改查基本命令
  10. Mycat--介绍/官网等