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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 快速入门Python性能测试框架Locust

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

Locust简介

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

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

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

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

Locust安装

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

pip install locust

查看是否安装成功

locust -V

一个简单的Locust案例

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

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

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

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),进入到脚本目录,执行命令:

locust -f 文件名.py

设置测试

命令行运行之后,通过浏览器访问:http://localhost:8089(Locust启动网络监控器,默认为端口号为:8089)951a6deff2d30b1954f0131c94e0585a.png
出现如下界面启动成功,输入对应的虚拟用户数、用户启动速度,点击Start swarming,开始运行性能测试。047f578f1a4afdd5fad1d31ad091ebca.png

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

测试监控字段说明

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

  • 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曲线图

46345ad237ea49f73fbea3bc95e7b9d5.png

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
1月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
115 8
|
16天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
5天前
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
34 15
|
2天前
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
|
5天前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
38 7
|
27天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
184 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
15天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
75 15
|
24天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
206 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
1月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
73 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
51 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架

热门文章

最新文章