Locust 是一款开源的 HTTP 和其他协议性能/负载测试工具。它采用开发者友好的开发方式,允许您使用常规 Python 代码定义测试。
Locust 测试可以通过命令行或 Web 界面运行。您可以实时查看吞吐量、响应时间和错误信息,并/或导出以供后续分析。
您可以将常规 Python 库导入测试中,并且 Locust 的可插拔架构使其具有无限扩展性。与大多数其他工具不同,您的测试设计永远不会受到 GUI 或特定领域语言的限制。
如需立即开始使用,请前往文档。
如果您希望用户执行循环、执行某些条件行为或进行某些计算,只需使用 Python 提供的常规编程结构即可。Locust 在其自己的 greenlet(轻量级进程/协程)中运行每个用户。这使得您可以像编写普通(阻塞)Python 代码一样编写测试,而无需使用回调或其他机制。由于您的场景“仅由 Python 编写”,因此您可以使用常规 IDE,并像常规代码一样对测试进行版本控制(这与使用 XML 或二进制格式的其他一些工具不同)。
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 的低用户开销使其非常适合测试高并发工作负载。
Locust 拥有用户友好的 Web 界面,可实时显示测试进度。您甚至可以在测试运行时更改负载。它也可以独立运行,轻松用于 CI/CD 测试。




尽管 Locust 主要面向网站/服务,但它几乎可以用于测试任何系统或协议。只需为您想要测试的内容编写一个客户端,或者探索一些由社区创建的客户端。
Locust 的代码库刻意保持较小规模,并且并非开箱即用,而是尝试使用常规 Python 代码,使其能够轻松适应您可能遇到的任何情况。没有什么可以阻止您:
开源遵循 MIT 许可证。