zoukankan      html  css  js  c++  java
  • 使用python的locust库进行性能测试

    Locust(俗称 蝗虫), 一个轻量级的开源压测工具,用Python编写。

    安装

    pip3 install locust 
    

    Python编写性能测试脚本

    import json
    
    from locust import HttpLocust, TaskSet, task
    
    """
    创建后台管理站点压测类,需要继承TaskSet
    可以添加多个测试任务
    """
    
    
    class AdminLoadTest(TaskSet):
    
        # 用户执行task前调用
        def on_start(self):
            pass
    
        # 用户执行task后调用
        def on_stop(self):
            pass
    
        @task(1)
        def download(self):
            header = {"Content-Type": "application/json"}
            data = {
                "staff_id": 94
            }
            data = json.dumps(data)
            self.client.post('/get_know_list', data=data, headers=header)
    
        @task(2)
        def body(self):
            header = {"Content-Type": "application/json"}
            data = {
                "staff_id": 94
            }
            data = json.dumps(data)
            self.client.post('/get_answer_list', data=data, headers=header)
    
    
    class RunLoadTests(HttpLocust):
        """
        创建运行压测类
        """
        task_set = AdminLoadTest
        min_wait = 1000
        max_wait = 50000
        weight = 1
    
    
    
    if __name__ == "__main__":
        import os
    
        os.system("locust -f test_download.py --host=http://127.0.0.1:5000")
    

    AdminLoadTest类继承TaskSet类,用以描述用户行为:

    • 使用@task装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1(事务blogs()被执行的概率是bky_index()的2倍);

    • on_start():每个locust用户执行测试事务之前执行一次,用于做初始化的工作,如登录;

    • on_stop(): 每次执行完测试事务之后执行一次。
      RunLoadTests类用于设置性能测试属性:

    • task_set:指向定义的一个用户行为类;

    • min_wait:模拟用户在执行每个任务之间等待的最小时间,单位为毫秒;

    • max_wait:模拟用户在执行每个任务之间等待的最大时间,单位为毫秒(min_wait和max_wait默认值为1000,因此,如果没有声明min_wait和max_wait,则locust将在每个任务之间始终等待1秒。);

    • weight:一个文件中有多个locust用户类时,指定用户类的权重(默认新增locust用户时会随机选择一个用户类);

    启动

    1. 终端进入代码目录,输入 locust -f start.py --host=http://localhost:5000
    2. 使用os.system在代码里面写入启动命令
      各个参数的含义
    • -f : 指定要运行的测试脚本文件
    • --host : 要加载主机的URL前缀,不指定时,读取WebsiteUser类中定义的host;
    • --master : 单台机器不能模拟更多用户时,分布式模式,通过--master指定主进程;

    打开Locust的web界面

        使用上面的命令行启动Locust之后,应该打开浏览器并将其指向http://localhost:8089/(如果您在本地运行Locust)。

    • Number of total users to simulate : 设置模拟用户数;
    • Hatch rate(users spawned/second) : 每秒产生(启动)的虚拟用户数;

    设置好模拟用户后,点击Start swarming开始测试,测试结果如下:

    • Type   :请求的类型,如GET/POST;
    • Name :请求的路径;
    • request :已发出请求数量;
    • fails :请求失败的数量;
    • Median :响应时间的中间值(单位:毫秒);
    • Average :平均响应时间(单位:毫秒);
    • Min :请求的最小响应时间(单位:毫秒);
    • Max :请求的最大响应时间(单位:毫秒);
    • Content Size:单个请求的大小(单位:字节);
    • reqs/sec:每秒钟请求的个数;

    其他

    Locust官网

  • 相关阅读:
    区块链学习(2)钱包
    区块链学习(1)密钥,公钥和地址
    Ubuntu下安装和开启telnet
    ubuntu下的ppa源使用
    tensorflow中手写识别笔记
    交叉熵解读
    Ubuntu下对executable (application/x-executable)文件创建快捷方式
    Numpy学习笔记(四)
    pycharm问题总结
    Numpy学习笔记(三)
  • 原文地址:https://www.cnblogs.com/pyweb/p/12851843.html
Copyright © 2011-2022 走看看