码迷,mamicode.com
首页 > 编程语言 > 详细

使用python的locust库进行性能测试

时间:2020-05-08 18:08:35      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:一个用户   方法   脚本   war   header   def   min   tps   含义   

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官网

使用python的locust库进行性能测试

标签:一个用户   方法   脚本   war   header   def   min   tps   含义   

原文地址:https://www.cnblogs.com/pyweb/p/12851843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!