• 压力测试-Locust框架基本使用及更新报错解决方案


    近期了解到locust在1.0版本之后出现了部分的改动,使用最新locustio加载时可能会出现一些问题,本文将讲述locust的使用基础及常见的环境异常。

    ******【环境方面】******

    报错信息1:

    无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    1. 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    2. #此报错会导致无法运行pip命令,可能因为pip文件受损或未安装造成

    解决方案:

     1、进入pip官网:https://pypi.org/project/pip/pip · PyPIThe PyPA recommended tool for installing Python packages.https://pypi.org/project/pip/

    2、点击Download files下载.tar.gz格式文件

    3、将文件解压到一个新建的纯英文文件夹下,并通过文件夹地址栏进入cmd的dos窗口,输入命令:python setup.py install(前提是电脑已经安装了python解释器

    1. python setup.py install
    2. #Dos界面输入

    4、 提示success相关字样后关闭窗口,重启pycharm编辑器并运行pip命令即可。

    报错信息2:

    You are using pip version 21.1.2; however, version 21.3.1 is available.
    You should consider upgrading via the 'D:\environment_test\Python_ui_Auto\venv\Scripts\python.exe -m pip install --upgrade pip' command
     

    1. You are using pip version 21.1.2; however, version 21.3.1 is available.
    2. You should consider upgrading via the 'D:\environment_test\Python_ui_Auto\venv\Scripts\python.exe -m pip install --upgrade pip' command
    3. #此报错可能会造成引导安装新版的locust时无法加载最新资源

    解决方案:

    在Terminal中输入如下命令后回车即可,安装后重启编辑器或等待自动加载

    1. python -m pip install -U pip
    2. #python官方方法,在线更新pip

    报错信息3:

    ERROR: Could not find a version that satisfies the requirement locust

    1. ERROR: Could not find a version that satisfies the requirement locust
    2. #版本号未找到

    解决方案:

    使用pip install locustio==版本号进行安装,注意locust后面有io,安装后重启编辑器或等待自动加载

    1. pip install locustio==0.14.6
    2. #以0.14.6版本为例

    目前已更新至1.0之后版本,后文会讲解1.0之后版本变化

    报错信息4:

    Traceback (most recent call last):
    File "D:/environment_test/ui_auto_web/script/Pressure_test.py", line 1, in
    from locust import TaskSet, HttpLocust, task, constant, constant_pacing, between
    ImportError: cannot import name 'HttpLocust'

    1. Traceback (most recent call last):
    2. File "D:/environment_test/ui_auto_web/script/Pressure_test.py", line 1, in
    3. from locust import TaskSet, HttpLocust, task, constant, constant_pacing, between
    4. ImportError: cannot import name 'HttpLocust'
    5. #1.0版本以后的locust使用之前的版本包会造成这个问题

    解决方案:

    将HttpLocust变更为HttpUser,且实例化时task_set修改成task_create


    ******新旧版本使用过程中主要变化点******

    1、早期版本(0.14.6之前)使用Min_wait=xxx和Max_wait=xxx来设置每个虚拟用户的创建间隔时间,实践过程中发现此方法虽然没有报错但似乎已经失效,替代方案为:

    1. wait_time = constant(5)
    2. #放在用户类中使用,间隔等待时间,需要提前导包

    2、1.0之后版本的locustio,不能再使用名称task_set来实例化,需将其替换为task_create或其它名称,不与其重名即可。

    3、1.0之后版本的locustio在定义用户类时不可以再继承HttpLocust,需继承HttpUser类,此改动也需要将导包的位置进行修改,必须先确保是1.0之后的locustio才需要这样修改 ,查询当前locust版本命令:locust -V

    1. locust -V
    2. #查询当前locust版本,V是大写的

    ******基础结构使用******

    基本框架结构: 

    1. from locust import TaskSet, HttpLocust, task, constant
    2. #导包 1.0之后版本需把HttpLocust替换为HttpUser
    3. class Task01(TaskSet):
    4. #定义用户集
    5. @task(x)
    6. #任务(比重)
    7. def task_01(self):
    8. self.json_data = {
    9. "x": 1,
    10. "x": 1,
    11. "x": "123",
    12. "x": "456",
    13. "x": 1
    14. }
    15. self.Token = "x"
    16. #Token
    17. self.new_headers = {"Authorization-Token": self.Token, "Content-Type": "application/json"}
    18. self.response= self.client.post("/path", json=self.json_data,
    19. headers=self.new_headers)
    20. status_code= self.response.status_code
    21. res_json = self.response1.json()
    22. print("响应数据为:{},状态码为:{}".format(res_json, status_code))
    23. @task(x)
    24. #任务(比重)
    25. def task_02(self):
    26. pass
    27. ······
    28. class Administrator(HttpLocust):
    29. #定义用户类 1.0之后版本需把HttpLocust替换为HttpUser
    30. task_set = Task01
    31. #1.0之后版本不能用task_set命名
    32. wait_time = constant(x)
    33. host = "http://192.168.x.x:xxxx"

    启动方法:

    Terminal:locust -f xx.py (二级目录的话先cd到最后一层)

    通过指定端口号访问127.0.0.1:端口号

    注:如果127.0.0.1无效,则使用localhost替代

    分布式配置方法:

    在其它机器上部署相同的环境及文件后,使用如下命令来进行角色分配

    1. locust -f xx.py --master
    2. #控制机
    3. locust -f xx.py --slave --master-host=控制机IP
    4. #执行机

    关注我,不迷路

    ******本文相关专栏******

    软件测试-压力测试专栏(点击进入)


      ******我的其它作品专栏******

    PC常见故障汇总专栏(点击进入)

    EXCEL综合场景应用详解(点击此处进入)

    全国计算机等级考试-二级python基础(点击此处进入)

  • 相关阅读:
    OpenGL调用窗口,方向键和鼠标
    Python中的函数式编程是什么?
    【gazebo要素9】 SDF制作Model文件
    aws的alb,多个域名绑定多个网站实践
    【简单教程】利用Net2FTP构建免费个人网盘,实现便捷的文件管理
    解决Web端请求响应超时HTTP状态码504和110 timed out错误(详解汇总)
    LiteFlow v2.9.4发布!一款能让你系统支持热更新,编排,脚本编写逻辑的国产规则引擎框架
    Java.Integer.bitCount(int)源码解析
    【学习记录】Windows10蓝屏问题排查
    Maven setting.xml 配置
  • 原文地址:https://blog.csdn.net/Liu_GuoXing/article/details/127360648