前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速入门Python性能测试框架Locust

快速入门Python性能测试框架Locust

作者头像
吾非同
发布2021-12-04 16:23:09
2.3K0
发布2021-12-04 16:23:09
举报
文章被收录于专栏:吾非同吾非同

目前做性能测试,比较简单常用的工具就是jmeter,但是对于一些复杂需求和场景需要编写java代码,如果只会Python能做性能测试吗,当然可以,今天就介绍一下Python强大的性能测试框架Locust。

Locust简介

一个基于python语言的开源性能测试工具,Locust直译为蝗虫,比喻他能产生蝗虫般成千上万的并发,内部使用requests完成http请求,使用协程完成并发请求,提供WebUI美观方便,支持分布式并发,当然也可以根据需要进行二次开发。

它的最重要优点是运行开销小,可以产生更高的并发请求。

更详细的介绍和使用可以查看官网介绍:https://locust.io/

Github地址:https://github.com/locustio/locust

Locust安装

需要Python版本3.6及以上环境。

代码语言:javascript
复制
pip install locust

查看是否安装成功

代码语言:javascript
复制
locust -V

一个简单的Locust案例

新建一个用户行为类,定义任务集(用户行为),包含一个或多个请求。设置压测的基本参数,比如指向压测的host,等待时间等。

代码语言:javascript
复制
from locust import task, HttpUser, between

# 定义用户行为
class UserBehavior(HttpUser):
    host = "https://www.baidu.com" # 配置URL
    wait_time = between(1,2) # 用户执行每个task之后等待1-2秒
    # task装饰的方法会在Locust虚拟用户运行过程中被调用
    # 定义任务Locust发送请求是基于requests实现,请求的使用requests库一致
    @task
    def test_baidu(self):
        resp = self.client.get("/")
        return resp.status_code

当然,你也可以添加多个请求

代码语言:javascript
复制

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2)
    # wait_time = constant(3)  # 每次请求停顿时间 (思考时间)
    # 每个模拟用户开始执行,只执行一次
    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")
    # task()参数用于指定该行为的执行权重。参数越大每次被虚拟用户执行的概率越高。
    @task(3)
    def view_item(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")

运行Locust

在命令行运行Locust脚本,在cmd下(win),进入到脚本目录,执行命令:

代码语言:javascript
复制
locust -f 文件名.py

设置测试

命令行运行之后,通过浏览器访问:http://localhost:8089(Locust启动网络监控器,默认为端口号为:8089)

出现如下界面启动成功,输入对应的虚拟用户数、用户启动速度,点击Start swarming,开始运行性能测试。

  • Number of users:设置模拟用户总数
  • Spawn rate(users started/second):每秒新增虚拟用户数
  • Host:目标服务器的ip端口或域名

测试监控字段说明

点击STOP,运行完成,查看测试统计如下,类似于jmeter中聚合报告的内容:

  • Type:请求的类型,例如GET/POST。
  • Name:请求的路径。这里为百度首页,即:https://www.baidu.com/
  • request:当前请求数量。
  • fails:当前请求失败的数量。
  • Median:50%的用户响应时间,单位毫秒
  • 90%ile:90%请求响应时间
  • Average:所有请求的平均响应时间,单位毫秒。
  • Min:最小响应时间,单位毫秒。
  • Max:最大响应时间,单位毫秒。
  • Average size:平均网络字节数
  • Current RPS:每秒请求书(TPS)。
  • Current Failures/s:每秒失败数。

响应时间和TPS曲线图

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吾非同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Locust简介
  • Locust安装
  • 一个简单的Locust案例
  • 运行Locust
  • 设置测试
  • 测试监控字段说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档