python学习笔记(locust性能测试模块)
locust是基于python的性能测试工具、支持python2.7及其以上的版本、相对于主流的LR与Jmeter工具使用的方式不一样、locust是通过编写python代码来完成性能测试的。
通过LR与Jmeter都是一个特定平台、我们只能在这个平台上使用、局限性很大。但是利用locust通过python可以进行性能测试的同时,也能掌握python语言的使用,且因为是开发语言,测试过程中可以编写自己需要的功能内容。
博主这里就简单的整理下如何使用locust模块,主要的三个类: HttpLocust, TaskSet, task
TaskSet是任务类、定义待测试的任务代码集如下的UserBehavior的类,task是子任务方法
# -*- coding: utf_8 -*-
# 文件名称:main_pt.py
# locust基础性能测试模板
# 时间:2017-10-19 from locust import HttpLocust, TaskSet, task
import subprocess
import json # 性能测试任务类 TaskSet.
class UserBehavior(TaskSet):
# 开始
def on_start(self):
pass # 任务
@task(1)
def getTagVals(self):
u"""
request_url:请求路径
request_params:请求头参数
request_json:请求json参数
"""
request_url = "/xxx/tag/getTagVals" (待测试的路径)
request_params = {
"nonce": "abcdefg",
"_type": None,
"target": "CLNJ01",
"timestamp": 1507860000,
"apiId": "EC",
"apiSign": "D41D8CD98F00B204E9800998ECF8427E"
}
request_json = {
"tagKey": 25
}
response = self.client.post(
url=request_url,
params=request_params,
json=request_json
)
if response.status_code != 200:
print u"返回异常"
print u"请求返回状态码:", response.status_code
elif response.status_code == 200:
print u"返回正常" # 这里可以编写自己需要校验的返回内容
# content = json.loads(response.content)["content"]
# if content["tagKey"] == 25:
# print u"校验成功"
# print json.dumps(content, encoding="UTF-8", ensure_ascii=False) # 性能测试配置
class MobileUserLocust(HttpLocust):
u"""
min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
"""
# weight = 3
task_set = UserBehavior
host = "http://xxx" (待测试的ip或者域名)
min_wait = 3000
max_wait = 6000 if __name__ == "__main__":
subprocess.Popen("locust -f main_pt.py", shell=True)
最后HttpLocust类是用来设置性能测试的配置、如待测试的host、待测试的任务集task_set
如何运行:首先打开到文件路径下、然后直接运行脚本 python main_pt.py
运行成功后即可访问 locust的 web UI界面 :http://localhost:8089
提示输入的内容是 模拟的用户总数 和 每秒钟并发的用户数量、点击开始按钮即可
可以查看测试任务的性能结果 上图圈出的 RPS是 每秒用户数、FAILUSERS是 失败率
可以 STOP 中止测试 也可以 Edit 重新编辑性能测试的场景、还可以查看后台的打印内容:
python学习笔记(locust性能测试模块)的更多相关文章
- Python 学习笔记(6)--常用模块(2)
一.下载安装 下载安装有两种方式: yum\pip\apt-get 或者源码 下载源码 解压源码 进入目录 编译源码 python setup.py build 安装源码 python setup.p ...
- python学习笔记之常用模块(第五天)
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...
- python学习笔记13(模块、包)
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...
- Python学习笔记十_模块、第三方模块安装、模块导入
一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...
- Python学习笔记:bisect模块实现二分搜索
在Python中可以利用bisect模块来实现二分搜索,该模块包含函数只有几个: import bisect L = [1,3,4,5,5,5,8,10] x = 5 bisect.bisect_le ...
- python学习笔记(六):常用模块
一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...
- 吴裕雄--天生自然python学习笔记:Python3 模块
Python3 模块 在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办 ...
- [Python] Python学习笔记之常用模块总结[持续更新...]
作为一种极其简单的编程语言,Python目前成为了最炙手可热的几种语言之一.它不仅简单易学,而且它还为用户提供了各种各样的模块,功能强大,无所不能.有利必有弊,学习Python同样有困扰,其中之一就是 ...
- python学习笔记9--日志模块logging
我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...
- python 学习笔记---Locust 测试服务端性能
由于人工智能的热度, python目前已经成为最受欢迎的编程语言,一度已经超越Java . 本文将介绍开源的python 测试工具: locust 使用步骤: 1. 安装python 3.0以上版本 ...
随机推荐
- 09.Curator临时节点
使用Curator也可以简化Ephemeral Node (临时节点)的操作.临时节点驻存在ZooKeeper中,当连接和session断掉时被删除.比如通过ZooKeeper发布服务,服务启 ...
- Python使用logging来记录日志
#encoding:utf-8 import logging.config from logging.handlers import RotatingFileHandler import Config ...
- 分区实践 A PRIMARY KEY must include all columns in the table's partitioning function
MySQL :: MySQL 8.0 Reference Manual :: 23 Partitioning https://dev.mysql.com/doc/refman/8.0/en/parti ...
- spring boot web服务
[root@d java]# tree -I target .├── pom.xml└── src ├── main │ ├── java │ │ └── com │ │ └── ...
- a Javascript library for training Deep Learning models
w强化算法和数学,来迎接机器学习.神经网络. http://cs.stanford.edu/people/karpathy/convnetjs/ ConvNetJS is a Javascript l ...
- Mongodb3.X版本的 的用户认证
一直使用公司的mongodb环境,本地的mongodb没有开启认证,为了环境更一致,决定加上本地mongodb的认证,不过在这个过程中发生了点波折. 我使用的是window版本的3.2,公司使用的是2 ...
- proc_create函数内幕初探
一直以为PROC文件系统很是晦涩难懂,平时仅仅是使用它,不愿意去触碰内核中的具体实现.今天突发奇想,想看看里面究竟是怎么实现的,结果……真是大跌眼镜,没想到里面并不复杂 关于PROC文件系统的功能以及 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 Solution
A - Buy and Resell 题意:给出n个交易点,每次能够选择买或者卖,求获得最大利润 思路:维护两个优先队列,一个是卖,一个是替换,当价格差相同时,优先替换,因为次数要最少 #includ ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON MoveRectangle2
zw版[转发·台湾nvp系列Delphi例程]HALCON MoveRectangle2 procedure TForm1.Button1Click(Sender: TObject);var img ...
- Entity Framework Code First在Oracle下的伪实现(转)
为什么要说是伪实现,因为还做不到类似MsSql中那样完全的功能.Oralce中的数据库还是要我们自己手动去创建的.这里,我们舍掉了Model First中的EDMX文件,自己在代码里面写模型与映射关系 ...