locust一个使用Python编写可扩展的负载测试工具

Locust


Locust 是一款开源的 HTTP 和其他协议性能/负载测试工具。它采用开发者友好的开发方式,允许您使用常规 Python 代码定义测试。

Locust 测试可以通过命令行或 Web 界面运行。您可以实时查看吞吐量、响应时间和错误信息,并/或导出以供后续分析。

您可以将常规 Python 库导入测试中,并且 Locust 的可插拔架构使其具有无限扩展性。与大多数其他工具不同,您的测试设计永远不会受到 GUI 或特定领域语言的限制。

如需立即开始使用,请前往文档

功能

使用普通的 Python 编写用户测试场景

如果您希望用户执行循环、执行某些条件行为或进行某些计算,只需使用 Python 提供的常规编程结构即可。Locust 在其自己的 greenlet(轻量级进程/协程)中运行每个用户。这使得您可以像编写普通(阻塞)Python 代码一样编写测试,而无需使用回调或其他机制。由于您的场景“仅由 Python 编写”,因此您可以使用常规 IDE,并像常规代码一样对测试进行版本控制(这与使用 XML 或二进制格式的其他一些工具不同)。

python 复制代码
from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2)

    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(3)
    def view_item(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")

分布式可扩展 - 支持数十万用户

Locust 可以轻松在多台机器上分布式运行负载测试。它基于事件(使用 gevent),这使得单个进程能够处理数千个并发用户。虽然其他工具在给定硬件上每秒可以处理更多请求,但 Locust 的低用户开销使其非常适合测试高并发工作负载。

基于 Web 的用户界面

Locust 拥有用户友好的 Web 界面,可实时显示测试进度。您甚至可以在测试运行时更改负载。它也可以独立运行,轻松用于 CI/CD 测试。

Locust截图1
Locust截图2
Locust截图3
Locust截图4

可测试任何系统

尽管 Locust 主要面向网站/服务,但它几乎可以用于测试任何系统或协议。只需为您想要测试的内容编写一个客户端,或者探索一些由社区创建的客户端。

可破解

Locust 的代码库刻意保持较小规模,并且并非开箱即用,而是尝试使用常规 Python 代码,使其能够轻松适应您可能遇到的任何情况。没有什么可以阻止您:

链接

许可证

开源遵循 MIT 许可证。

关于项目

Locust 是一款开源的 HTTP 及其他协议性能/负载测试工具。它对开发者友好,允许你使用常规 Python 代码定义测试。
MIT
Python
27,148
3151
416
2011-02-17
2025-11-27

增长趋势 - stars