Locust介绍:
Locust作为基于Python语言的性能测试框架。
其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具。他的工作原理为协程并发,也就是gevent库。
Locust的缺点也显而易见,他没有友好的性能监控页面,没有任何关联,参数化,检查点之类的定义。他仅仅就是一个轻量级的框架,但是正因为如此,我们可以通过python成千上万的库支持,定制自己任何想要的东西!
安装
通过pip 安装locust
pip install locust
样例
简单的Locust框架样例:
Locust每生成一个实例都代表一个虚拟的用户,用来发送请求到进行负载测试的系统。
该用户的行为由task_set属性定义,该属性应指向一个 TaskSet类。
这个类通常应该由某些类继承并且重新定义。
例如:
1 from locust import Locust, TaskSet, task 2 3 class WebsiteTasks(TaskSet): 4 def on_start(self): 5 pass 6 7 @task(1) 8 def index(self): 9 pass 10 11 @task(5) 12 def about(self): 13 pass 14 15 class WebsiteUser(Locust): 16 task_set = WebsiteTasks 17 min_wait = 5000 18 max_wait = 15000
例如,当测试HTTP系统时,使用的HttpLocust类
1 from locust import HttpLocust, TaskSet, task 2 3 class MyTaskSet(TaskSet): 4 @task(2) 5 def index(self): 6 self.client.get("/") 7 8 @task(1) 9 def about(self): 10 self.client.get("/about/") 11 12 class MyLocust(HttpLocust): 13 task_set = MyTaskSet 14 min_wait = 5000 15 max_wait = 15000
WebsiteTasks(TaskSet): 继承TaskSet类,该类中主要为用户自己设定的测试集
TaskSet类中 on_start是优先方法,他会优先于下面所有task方法。
@task装饰器,task中的数字是测试中该测试方法在测试集中的权重
HttpLocust 和 Locust继承类中: task_set 选在需要的测试集,min and max wait取最大和最小等待区间值,取值为随机
启动
直接启动:
locust --host=http://example.com
有文件路径时:
locust -f locust_files/my_locust_file.py --host=http://example.com
需要多机并发操作时,主机启动:
locust -f locust_files/my_locust_file.py --master --host=http://example.com
辅助机器启动:
locust -f locust_files/my_locust_file.py --slave --host=http://example.com
打开测试页面
打开测试页面,Locust默认的地址通常为:http://127.0.0.1:8089
设定总人数和每秒增加人数,然后点击开始