迈出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电子书

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

四、入门学习视频

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

四、实战案例

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

相关推荐
研☆香11 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
lancyu11 小时前
关于多轮对话机器人的上下文Token优化和解决方案
人工智能·python·深度学习·机器学习·chatgpt·机器人·prompt
草莓橙子碗11 小时前
Claude 使用指南
开发语言·python
hsjiasb11 小时前
FreeRTOS学习(三十九)——最终总结
学习·学习笔记·freertos
工具分享12 小时前
陪跑跟品爆单AI选品助手,高效跟品会赔本吗?
人工智能·python
COOLMO研究AI12 小时前
Python 如何实现 AI API 的提示词(Prompt)版本管理与热更新
人工智能·python·prompt
老郑聊AI业财智造12 小时前
Transformer 技术架构与源码分析
人工智能·python·深度学习·语言模型·架构·transformer·软件工程
longxiaozhang612 小时前
C# Array类:数组其实没那么难
开发语言·c#
程序员三藏12 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(47):Nemori——用“预测误差”判断什么经验值得被记住
论文阅读·人工智能·学习·开源·github