Python实现性能自动化测试竟然如此简单【颠覆你的三观】

2023-10-19 00:50

本文主要是介绍Python实现性能自动化测试竟然如此简单【颠覆你的三观】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

一、思考❓❔

1.什么是性能自动化测试?

性能系统负载能力

超负荷运行下的稳定性

系统瓶颈

自动化测试使用程序代替手工

提升测试效率

性能自动化使用代码模拟大批量用户

让用户并发请求

多页面多用户并发请求

采集参数,统计系统负载能力

生成报告

2.Python中的性能自动化测试库?

locust库

使用Python

使用代码来创建批量用户

分布式

可以在多台服务器上,进行分布式性能测试

可伸缩性强

稳定、应用广泛

经得住各种场景下的考验

基于web ui界面展示测试详情

能测任何系统

二、基础操作

1.安装locust

使用官方pypi源来安装

pip install locustio

使用豆瓣pypi源来安装(推荐)

pip install -i https://pypi.douban.com/simple locustio

安装成功之后,在cmd控制台将会新增一条命令,可输入如下命令查看:

locust --help

2.基本用法

在项目根目录下创建locustfile.py文件

from locust import Locust, TaskSet, task

class MyTasks(TaskSet):

“”"

创建测试任务类,需要继承TaskSet

可以添加多个测试任务

“”"

每个测试任务,往往会以实例方法的形式来呈现

同时需要使用task装饰器来装饰测试任务

@task

def one_task(self):

print(“执行一个伟大的测试任务!”)

class RunTasks(Locust):

“”"

创建运行测试类,需要继承Locust父类

“”"

task_set = MyTasks # 指定测试任务类,使用task_set覆盖父类的类属性

min_wait = 2000 # 指定启动任务间隔的时间范围(单位毫秒):2~5秒之间

max_wait = 5000 # 使用min_wait、max_wait覆盖父类的类属性

执行性能测试

打开Pycharm Terminal控制台

运行如下命令:

locust

运行之后,控制台会在本地监听一个端口

a. 程序文件要命名为 locustfile.py才行

b. 假如命名为one_example.py,则需要这样运行

locust -f one_example.py

在浏览器打开UI设置界面

默认使用localhost:8089打开

三、综合案例演练

1.编写自动化测试脚本

在项目根目录下创建test_load.py文件

from locust import HttpLocust, TaskSet, task

class AdminLoadTest(TaskSet):

“”"

创建后台管理站点压测类,需要继承TaskSet

可以添加多个测试任务

“”"

def login(self):

“”"

登录实例方法

:return:

“”"

self.client.post(“http://localhost:8088/users/login/”,

{“user_account”: “admin”, “password”: “123456”})

def logout(self):

“”"

登出实例方法

:return:

“”"

self.client.get(“http://localhost:8088/users/logout/”)

def on_start(self):

“”"

当任何一个task调度执行之前,

on_start实例方法会被调用

先登录

:return:

“”"

self.login()

def on_stop(self):

“”"

当任何一个task调度执行之后,

on_stop实例方法会被调用

后登出

:return:

“”"

self.logout()

@task

def admin_index(self):

“”"

对后台主页进行压测

:return:

“”"

self.client.get(“http://localhost:8088/admin/”)

class RunLoadTests(HttpLocust):

“”"

创建运行压测类

“”"

task_set = AdminLoadTest

2.使用命令行运行

打开Pycharm Terminal控制台,运行如下命令:

注意:–host参数指定http主机地址,-f参数指定压测程序文件名

3.打开web ui界面进行配置

设置并发用户数为10,每5秒创建一个用户

压测过程截图

美轮美奂的压测报告

压测失败详情

下载压测统计数据

下载的压测统计数据csv文件

六、总结

locust做压测功能极其强大

支持分布式部署

提供的接口简单

压测代码非常容易编写

提供UI界面来配置

美观、详细的图表统计

在这里插入图片描述

温馨提示:大家如果觉得这个专栏还不错,一定记得点赞收藏哟!

这篇关于Python实现性能自动化测试竟然如此简单【颠覆你的三观】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

Java中Map的五种遍历方式实现与对比

《Java中Map的五种遍历方式实现与对比》其实Map遍历藏着多种玩法,有的优雅简洁,有的性能拉满,今天咱们盘一盘这些进阶偏基础的遍历方式,告别重复又臃肿的代码,感兴趣的小伙伴可以了解下... 目录一、先搞懂:Map遍历的核心目标二、几种遍历方式的对比1. 传统EntrySet遍历(最通用)2. Lambd

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

springboot+redis实现订单过期(超时取消)功能的方法详解

《springboot+redis实现订单过期(超时取消)功能的方法详解》在SpringBoot中使用Redis实现订单过期(超时取消)功能,有多种成熟方案,本文为大家整理了几个详细方法,文中的示例代... 目录一、Redis键过期回调方案(推荐)1. 配置Redis监听器2. 监听键过期事件3. Redi

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

基于SpringBoot实现分布式锁的三种方法

《基于SpringBoot实现分布式锁的三种方法》这篇文章主要为大家详细介绍了基于SpringBoot实现分布式锁的三种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、基于Redis原生命令实现分布式锁1. 基础版Redis分布式锁2. 可重入锁实现二、使用Redisso