Python集成locust 做性能测试

2024-03-26 07:48

本文主要是介绍Python集成locust 做性能测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介:
       Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。

特性:描述来自Locust官网

  1.用普通的Python编写用户测试场景

    不像通常那样需要笨重的UI或臃肿的XML代码。基于协同程序而不是回调,您的代码看起来和行为一样正常,阻止Python代码。

  2.分布式和可扩展 - 支持数十万用户

    Locust支持分布在多台机器上的运行负载测试。基于事件,即使一个Locust节点也可以在一个进程中处理数千个用户。这背后的部分原因是,即使您模拟了许多用户,但并非所有用户都在积极地使用您的系统。通常,用户在闲暇时想出下一步该做什么。每秒请求数!=在线用户数。

  3.基于Web的UI

    Locust有一个简洁的HTML + JS用户界面,可以实时显示相关的测试细节。由于用户界面是基于网络的,因此它具有跨平台且易于扩展的特点。

  4.可以测试任何系统

    即使Locust是面向Web的,它也可以用来测试几乎任何系统。只需编写一个客户端,您可以测试它并用蝗虫进行测试!这太棒了!

二、安装:
环境win 10    Python3.7.3   locust 0.11.0

1.进入python的安装目录下的Scripts下,执行  pip3  install locust

三、启动测试
1.准备工作

脚本例子:通过http协议做接口测试的实践

1)编写.py的测试脚本,

    测试代码文件保存成****.py文件,存放在**\Python3\Scripts 下

from locust import  task ,TaskSet,HttpLocust
import  subprocess
# 性能测试任务类 TaskSet.
class UserBehavior(TaskSet):# 开始def on_start(self):pass# 任务@task(1)def getTagVals(self):u"""request_url:请求路径request_params:请求头参数request_json:请求json参数"""request_url = "/api/cm/admin/logout" #(待测试的路径)request_params = {# "nonce": "abcdefg",# "_type": None,# "target": "CLNJ01",# "timestamp": 1507860000,# "apiId": "EC",# "apiSign": "D41D8CD98F00B204E9800998ECF8427E""login_name":"admin","pwd":"123"}# 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 = 3task_set = UserBehaviorhost = "http://192.168.1.142:9400"  #(待测试的ip或者域名)min_wait = 3000max_wait = 6000if __name__ == "__main__":subprocess.Popen("locust -f LcostTestAdujust.py", shell=True)

 

2.运行脚本

方法一:启动web,通过web端进行参数设置

    1)dos进入Scripts目录下,执行 locust -f ****.py --host=http://0.0.0.0:0000    (PS:-f后面加需要执行的.py文件名字      --host测试的http服务的ip和port)

    2)打开浏览器,如果是本机访问则输入http://localhost:8089/    如下图    (PS:Number of users to simulate:设置模拟的用户总数,Hatch rate (users spawned/second):每秒启动的虚拟用户数 ,Start swarming:执行locust脚本)

 

   3)查看测试结果

   PS:点击STOP可以停止locust脚本运行

Type:请求类型,即接口的请求方法;

Name:请求路径;

requests:当前已完成的请求数量;

fails:当前失败的数量;

Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒;

Average:平均响应时间,单位为毫秒;

Min:最小响应时间,单位为毫秒;

Max:最大响应时间,单位为毫秒;

Content Size:所有请求的数据量,单位为字节;

reqs/sec:每秒钟处理请求的数量,即QPS;

方法二:通过DOS命令输入测试参数及运行命令

    1)启动测试:dos进入Scripts目录下,执行  locust -f ****.py --csv=onetest --host=http://0.0.0.0:0000 --no-web -c10 -r10 -t2  (PS:-f 指定运行的py文件的名字,--csv 生成报告的名字,--host 测试的http服务的ip和port,--no-web 不用web启动,-c 设置虚拟用户数,  -r 设置每秒启动虚拟用户数, -t  设置运行时间)
 

这篇关于Python集成locust 做性能测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847779

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四