Locust
Locust是一个开源的HTTP和其他协议性能/负载测试工具。其开发者友好的方法让你可以用常规Python代码定义测试。
Locust测试可以从命令行运行,也可以使用其基于Web的UI运行。吞吐量、响应时间和错误可以实时查看和/或导出以供后续分析。
你可以在测试中导入常规Python库,借助Locust的可插拔架构,它可以无限扩展。与使用大多数其他工具不同,你的测试设计永远不会受到GUI或领域特定语言的限制。
要立即开始,请前往文档。
特性
用纯Python编写用户测试场景
如果你希望用户循环、执行某些条件行为或进行一些计算,你只需使用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用户的低开销使其非常适合测试高并发工作负载。
基于Web的用户界面
Locust有一个用户友好的Web界面,可以实时显示测试进度。你甚至可以在测试运行时更改负载。它也可以在没有UI的情况下运行,便于用于CI/CD测试。
可以测试任何系统
尽管Locust主要用于测试网站/服务,但它可以用来测试几乎任何系统或协议。只需为你想测试的内容编写一个客户端,或者探索社区创建的一些客户端。
可定制性
Locust的代码库有意保持小巧,并不能开箱即用地解决所有问题。相反,我们试图让它易于适应你可能遇到的任何情况,使用常规Python代码。没有什么能阻止你:
链接
- 文档:docs.locust.io
- 支持/问题:StackOverflow
- GitHub讨论:GitHub讨论
- 聊天/讨论:Slack (注册)
作者
- 维护者:Lars Holmberg
- UI:Andrew Baldwin
- 原创者:Jonatan Heyman
- 非常感谢我们所有的贡献者
许可证
根据MIT许可证开源(详情见_LICENSE_文件)。