功能
用普通老式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主要与网站/服务一起工作,它也可以用来测试几乎任何系统或协议。只是write a client您想要测试的内容,或者explore some created by the community
可黑客攻击
蝗虫很小,非常灵活,我们打算保持这种状态。如果你想send reporting data to that database & graphing system you like,包装对睡觉api的调用以处理系统的细节或运行totally custom load pattern,没有什么能阻止你!
链接
- 网站:locust.io
- 文档:docs.locust.io
- 代码/问题:Github
- 支持/问题:StackOverflow
- 聊天/讨论:Slack signup
作者
- Carl Bystr(@cgbystrom(在推特上)
- Jonatan Heyman(@jonatanheyman(在推特上)
- Joakim Hamrén(@Jahaaja(在推特上)
- Hugo Heyman(@hugoheyman(在推特上)
- Lars Holmberg
许可证
根据麻省理工学院许可许可的开放源码(请参阅许可证有关详细信息,请参阅文件)