一、思考

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实现性能自动化测试竟然如此简单【颠覆你的三观】的更多相关文章

  1. Python实现性能自动化测试竟然如此简单

    一.思考❓❔ 1.什么是性能自动化测试? 性能 系统负载能力 超负荷运行下的稳定性 系统瓶颈 自动化测试 使用程序代替手工 提升测试效率 性能自动化 使用代码模拟大批量用户 让用户并发请求 多页面多用 ...

  2. Python实现性能自动化测试的方法【推荐好文】

    1.什么是性能自动化测试? ◆ 性能 △ 系统负载能力 △ 超负荷运行下的稳定性 △ 系统瓶颈 ◆ 自动化测试 △ 使用程序代替手工 △ 提升测试效率 ◆ 性能自动化 △ 使用代码模拟大批量用户 △ ...

  3. [转] Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  4. Python代码性能优化技巧

    摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...

  5. Python 代码性能优化技巧(转)

    原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...

  6. Python 代码性能优化技巧

    选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...

  7. 基于Jmeter+maven+Jenkins构建性能自动化测试平台

      一.目的: 为能够将相关系统性能测试做为常规化测试任务执行,且可自动无人值守定时执行并输出性能测试结果报告及统计数据,因此基于Jmeter+maven+Jenkins构建了一套性能自动化测试平台 ...

  8. python+requests接口自动化测试

    转自https://my.oschina.net/u/3041656/blog/820023 原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测 ...

  9. 关于Python Profilers性能分析器

    1. 介绍性能分析器 作者:btchenguang profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述.Python中含有3个模块提供这样的功能,分别是cProf ...

随机推荐

  1. python常见数据类型及操作方法

    title: "python数据类型及其常用方法" date: 2020-04-21T10:15:44+08:00 可变数据类型:允许变量的值发生变化,即如果对变量进行append ...

  2. break,continue,break的用法与区别

    1.return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行.       (2) return 返回一个值给调用该方法的语句,返回值的数据类型必须与方 ...

  3. 小师妹学JVM之:JIT中的PrintCompilation

    目录 简介 PrintCompilation 分析PrintCompilation的结果 总结 简介 上篇文章我们讲到了JIT中的LogCompilation,将编译的日志都收集起来,存到日志文件里面 ...

  4. Python3-算法-选择排序

    选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...

  5. 使用 nuget server 的 API 来实现搜索安装 nuget 包

    使用 nuget server 的 API 来实现搜索安装 nuget 包 Intro nuget 现在几乎是 dotnet 开发不可缺少的一部分了,还没有用过 nuget 的就有点落后时代了,还不快 ...

  6. centos 7 增加永久静态路由

    1 在 /etc/sysconfig/network-scripts/ 目录下添加route-eth3,eth3为实际网卡名称. [root@compute1 ~]# cat /etc/sysconf ...

  7. vue-elemnt-admin源码学习

    vue-elemnt-admin源码学习 vue-element-admin是一个基于vue,element-ui的集成的管理后台.它的安装部分就不说了,按照官网的步骤一步步就可以执行了. https ...

  8. SpringBoot--数据库管理与迁移(LiquiBase)

    随着开发时间积累,一个项目会越来越大,同时表结构也越来越多,管理起来比较复杂,特别是当想要把一个答的项目拆分成多个小项目时,表结构拆分会耗很大的精力:如果使用LiquiBase对数据库进行管理,那么就 ...

  9. mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)

    在上篇文章中分析了mybatis解析<mappers>标签,<mybatis源码配置文件解析之五:解析mappers标签>重点分析了如何解析<mappers>标签中 ...

  10. 循环&&数组&&方法&&面向对象

    day03 数值的默认值 类型 初始化的值 byte,short,int,long 0 float,double  0.0 char 空格 boolean false 引用类型 null JVM的内存 ...