Python的魔力在于化繁为简,基于Python的Locust也能给仍然困惑于性能测试的我们带来启发。
Locust特点
- 以纯Python方式编写用户脚本,提供极大自由度。
- 用户脚本可以串行方式编写,Locust会通过轻量级进程/协程产生并发,无需自己做并发编程。
- 并发量大,借助于gevent库,Locust能产生成千上万并发请求。
- 开销小,Locust用户运行时开销很小。
- 良好的Web UI对性能结果实时监测。
- 能测任何系统任何协议,只需要写个client即可。
- 开放REST API,尽情发挥。
安装Locust
需要Python版本3.6及以上。
执行pip命令:
- $ pip install locust
验证安装成功:
- $ locust -V
安装时会一并安装依赖库:
Installing collected packages: Werkzeug, pywin32, zope.event, greenlet, gevent, geventhttpclient, itsdangerous, flask, Flask-BasicAuth, ConfigArgParse, pyzmq, psutil, locust
能看出来flask为Locust提供了Web功能。
快速上手
使用Locust一般按照以下步骤进行:
- 编写Python用户脚本。
- 使用locust命令执行性能测试。
- (可选)通过Web界面监测结果。
示例代码如下,新建locustfile.py文件:
- import time
- from locust import HttpUser, task, between
- class QuickstartUser(HttpUser):
- wait_time = between(1, 2.5)
- @task
- def hello_world(self):
- self.client.get("/hello")
- self.client.get("/world")
- @task(3)
- def view_items(self):
- for item_id in range(10):
- self.client.get(f"/item?id={item_id}", name="/item")
- time.sleep(1)
- def on_start(self):
- self.client.post("/login", json={"username":"foo", "password":"bar"})
路径切换到locustfile.py文件所在目录,执行命令: