相信很多开发者都有对自己写的代码进行压测的经历,最容易想到的一般都是ab或者JMeter。ab相对比较简单,但由于是基于命令行的,看起来不美观,而且不方便通过编程来动态控制参数。JMeter有图形化界面并且也支持测试报告的导出,但其复杂的参数配置上手并不是很容易。前段时间在开发一个公司内部的项目,由于涉及到自定义的鉴权,期望能有一个支持编程的压测工具,经过一翻寻找,最终锁定了Locust。
Locust是基于Python实现的,内部使用协程模拟大量并发,同时支持分布式部署,并且除了支持命令行之外还有一个非常漂亮的web界面。
Locust的官网地址:www.locust.io,官方文档非常详细,安装也很简单。
$ pip install locust
安装成功之后验证是否安装成功
$ locust -Vlocust 2.5.0
编写脚本locustfile.py
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/")
然后在Locustfile.py文件所在目录运行locust
$ ls
locustfile.py
$ locust
可以看到启动了一个http://0.0.0.0:8089端口
在浏览器打开
设置好并发数和host地址,就可以开始测试了。
漂亮的图表
支持报告下载