Python locsut 入门与实践

打工人 · 2021年01月05日 · 最后由 打工人 回复于 2021年01月07日 · 2981 次阅读

基本介绍

Locust 是开源的、使用 python 开发、基于事件、支持分布式并且提供 webUI 进行测试执行和结果展示的性能测试工具
注:locust1.x 相比较于 0.x 变化较大,具体可参考:https://blog.csdn.net/kk_gods/article/details/110237549

locust 特性

模拟用户操作:支持多协议,locust 可以压测任意协议类型的系统
并发机制:摒弃了进程和线程,采用协程(gevent)机制,单台测试机可以产生数千并发压力

Locust 核心库

1、gevent:gevent 是一种基于协程的 Python 网络库,它用到 Greenlet 提供的,封装了 libevent 事件循环的高层同步 API。
2、flask:Python 编写的轻量级 Web 应用框架。
3、requests:Python Http 库
4、msgpack-python:MessagePack 是一种快速、紧凑的二进制序列化格式,适用于类似 JSON 的数据格式。msgpack-python 主要提供 MessagePack 数据序列化及反序列化的方法。
5、pyzmq:pyzmq 是 zeromq(一种通信队列) 的 Python 实现,主要用来实现 Locust 的分布式模式运行

压测工具比对

locust 实践

安装

Pip install locust
注:mac 通过软连接方式配置环境变量 ln -s xxxx/bin/locust /usr/local/bin/locust

locust 简单脚本

from locust import HttpUser, TaskSet, task
import logging


class UserBehave(TaskSet):

    @task(1)
    def get_books(self):
        response = self.client.get("/bookstore/api/v1/books")
        assert '200' in str(response), logging.info("failed")


class WebsiteUser(HttpUser):
    tasks = [UserBehave]
    min_wait = 1000
    max_wait = 3000
    host = "http://127.0.0.1:5000/"


if __name__ == '__main__':
    import os
    os.system(r'locust -f F:\code\perform\locusts.py --web-host="127.0.0.1" -P 8091')

访问 locust: http://127.0.0.1:8091

结果分析


New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;
Statistics:类似于 jmeter 中 Listen 的聚合报告;
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
Failures:失败请求的展示界面;
Exceptions:异常请求的展示界面;
Download Data:测试数据下载模块, 提供三种类型的 CSV 格式的下载,分别是:Statistics、responsetime、exceptions;

  • 核心指标:并发数、RPS、响应时间、异常率
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

实话实说,用 jmeter 不香吗,干嘛要用这个玩意。

aspstar 回复

并不是 jmeter 不好,而是一些项目的复杂场景,用 locust 的成本会更低,因为代码的灵活程度是优于工具的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册