迈出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全台学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
编程资料、学习路线图、源代码、软件安装包【点击这里】领取!

Python所有方向的学习路线图 ,清楚各个方向要学什么东西

100多节Python课程视频 ,涵盖必备基础、爬虫和数据分析

100多个Python实战案例 ,学习不再是只会理论

华为出品独家Python漫画教程 ,手机也能学习

历年互联网企业Python面试真题 ,复习时非常方便

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

相关推荐
芝士爱知识a6 分钟前
AlphaGBM 深度解析:下一代基于 AI 与蒙特卡洛的智能期权分析平台
数据结构·人工智能·python·股票·alphagbm·ai 驱动的智能期权分析·期权
2501_924878739 分钟前
AdAgent 能力成熟度模型:从 L1 自动化到 L5 自主增长引擎
运维·自动化
热爱编程的小刘21 分钟前
Lesson05&6 --- C&C++内存管理&模板初阶
开发语言·c++
苦逼IT运维44 分钟前
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)
linux·学习·docker·容器·kubernetes
52Hz1181 小时前
力扣230.二叉搜索树中第k小的元素、199.二叉树的右视图、114.二叉树展开为链表
python·算法·leetcode
喵手1 小时前
Python爬虫实战:网页截图归档完全指南 - 构建生产级页面存证与历史回溯系统!
爬虫·python·爬虫实战·零基础python爬虫教学·网页截图归档·历史回溯·生产级方案
张3蜂1 小时前
Python 四大 Web 框架对比解析:FastAPI、Django、Flask 与 Tornado
前端·python·fastapi
qq_12498707531 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
2601_948374571 小时前
商用电子秤怎么选
大数据·python