Python自动化 村长告诉你:Python 实现性能自动化测试竟然如此简单

kouyou · 2019年07月26日 · 最后由 Jeff 回复于 2019年11月30日 · 797 次阅读
本帖已被设为精华帖!

一、思考❓❔

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界面来配置
  • 美观、详细的图表统计

共收到 132 条回复

村长溜溜溜的。。

potato 将本帖设为了精华贴 07月26日 14:54

男神nice啊

好强大

keyou大佬棒棒哒!

可优大佬最棒!我的作业完成了!赞也点过了!(此条5毛,括号内删除)

10楼 已删除

优秀哦,乡亲们!!!

12楼 已删除
13楼 已删除
14楼 已删除
15楼 已删除
16楼 已删除
17楼 已删除
18楼 已删除

村长5,这是自动化调试评论

村长6,这是自动化调试评论

村长7,这是自动化调试评论

村长9,这是自动化调试评论

村长666,这是自动化评论

没有灵魂的机器人说:可优真帅!

来交作业了~~~~

eeeee

厉害了

wwww

哈哈哈

可优大佬威武!讲的东西很好!

可优大佬讲的东西很有价值!点个赞!

狮虎猎物获威名,可怜麋鹿有谁怜?

世间从来强食弱,纵使有理也枉然。

君休问,男儿本自纵横行。

挟飞仙以遨游,抱明月而长终。

点赞咯

拔草来了

可优大佬写得真棒!赞赞赞!!!

老师授业解惑,醍醐灌顶

犀渠玉剑良家子,白马金羁侠少年

可优大佬棒棒的!

可优村长老厉害了!!!!!!!,(作业自动化调试)

可优村长老厉害了!!!!!!!,(作业自动化调试)08725

可优村长老厉害了!!!!!!!,(作业自动化调试)15243

可优大佬非常阔爱,课也讲的棒棒哒!

可优大佬讲课棒棒哒!

可优村长老厉害了!!!!!!!,(作业自动化调试)34015

可优大佬上课666的!

可优村长老厉害了!!!!!!!,(作业自动化调试)75684

可优村长老厉害了!!!!!!!,(作业自动化调试)38692

keyou is a smart man!

可优村长老厉害了!!!!!!!,(作业自动化调试)28413

keyou is a smart man!!100

keyou is a smart man!!55

可优大佬棒棒的!20190815184804

可优大佬棒棒的!20190815185122

可优大佬bang bang bang!!!

20190815230415:可优大佬,如何将python学好呢?

20190815232537:可优大佬,python自动化测试坑好多,如何避免踩坑?

20190815233420:可优大佬,你走了,没人督促拔草了,田里长满了草

20190815233828:可优大佬,还是想说,教完自动化再2撤呀

20190815234319:每一发奋努力的背后,必有加倍的赏赐。

20190815234716:老铁,来深圳呀,哈哈!

20190815235125:可优大佬的课讲的既生动又好听

20190816001658:可优大佬,如何将python学好呢?

20190816004840:可优大佬,喜欢你课上的图片,既励志又不鸡汤

文章通俗易懂,内容很有用

好好好

写的真好!

干货满满

可优大佬课讲得很棒,再多多练习英文发音就更完美啦!!5

受益匪浅

厉害厉害

可优大佬棒棒哒

very good

学到很多

可优大佬棒棒的,大赞赞

厉害厉害干货满满

81楼 已删除

keyou is a smart man!!81

村长,干货满满!+82714赞!

keyou is a smart man!!39

可优老师明明可以靠才华,偏偏要靠颜值

2019-08-18 01:02:51可优老师明明可以靠才华,偏偏要靠颜值

老徐拜读村长告诉你:Python 实现性能自动化测试竟然如此简单

老徐2019-08-18 19:55:39拜读:村长告诉你:Python 实现性能自动化测试竟然如此简单

可优男神,真厉害啊!什么都会

可优老师,棒棒哒!都是干货!

2019-08-19 17:17:13可优老师明明可以靠才华,偏偏要靠颜值

可有村长起来除草啦

可有村长起来除草啦,内容还不能重复撒!

20190820011443:老铁,来深圳呀,哈哈!

老师授业解惑,学生醍醐灌顶

大佬666_20190820105146

可优大佬超厉害的!

可优大佬宇宙第一帅!!

可优大佬棒棒哒!! 浅显易懂,受教啦!!

可优男神~~ 浅显易懂,受教啦!!好好学习学习!!

给可优大佬点赞!!_2019-08-20 19:53:20.368222

可优真棒

大佬棒棒的!20190822223402

可优大佬棒棒的!20190822224408

可优大佬,可优大佬!

2019-08-24 14:25:13可优老师明明可以靠才华,偏偏要靠颜值

可优大佬厉害了,666

干货满满,收益匪浅!2019-08-25 22:32:11

干货满满,收益匪浅!2019-08-25 22:49:48

干货满满,收益匪浅!2019-08-25 23:04:21

生活因你而火热

大王叫我来巡山!!我到这儿转一转!!!

大王叫我来巡山!!!我到这儿转一转!!!

点赞可优大佬!666

赞,通俗易懂,已收藏

keyou大佬威武霸气!

2019-08-27 18:13:06可优老师我比你帅多了

666啊村长

受益匪浅

可以横绝峨眉巅, 优昙华现人间瑞, 老鱼跳槛识清讴, 师师重老过湖湘, 真情卓立希夷杳, 棒头手眼從何起

2019-09-09 12:14:17可优老师明明可以靠才华,偏偏要靠颜值

20190920235557:每一发奋努力的背后,必有加倍的赏赐。

20190921122806:可优大佬,你走了,没人督促拔草了,田里长满了草

20190921172015:可优大佬,不上测开还能问问题?

20190921174343:最喜欢上可优大佬的课

可优老师是集颜值与才华于一身的大佬

可优大佬明明可以靠颜值挣钱,非要靠实力

可优大佬在课间休息时间最爱播放的歌曲是:Adele唱的,我也爱听

可优大佬讲课诙谐幽默,易于理解

就喜欢看可优老师得帖子,都是干货!!

可优老师得帖子很有价值!!都是干货!!

都是干货!!

133楼 已删除

做作业

干货!!真棒。

喜欢可优老师讲课,喜欢看可优老师的帖子。

666文章浅显易懂,手动点赞

满满干货,好好学习!!!

满满干货,好好学习,天天向上!!!

手动点赞!!

手动给可优老师点赞!

142楼 已删除

可优大佬讲课棒棒哒!18:04:51

先赞再看,已成习惯,村长大佬,干货满满!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册