啥都不说,先发地址:https://www.locust.io/
Locust是一个开源负载测试工具,理论上可以使用Python代码定义用户行为,并使用数百万个并发用户来支持您的系统。作者使用pip install locustio 方式进行的安装,其他方式可以查看一下官方文档,这个不难。
第一步:简单的例子
fromlocustimportHttpLocust,TaskSet
deflogin(l):
l.client.post("/login",{"username":"lvxin","password":"123456"})
deflogout(l):
l.client.post("/logout")
defindex(l):
l.client.get("/")
defgoods_list(l):
l.client.get("/goods_list")
classUserBehavior(TaskSet):
tasks =
defon_start(self):
login(self)
defon_stop(self):
logout(self)
classWebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait =5000
max_wait =9000
启动脚本:
代码中使用的是--host地址的路由,-f是我们的脚本文件
python启动后,默认会监听8089端口,如果有异常情况,请先看看端口是否被占用了
启动后的界面:
第一个参数是要模拟的用户数,第二位是每秒的增长数量,在实际使用时,建议增长数量小一些,这样能更方便我们观察程序的动态。
过一会
模拟人数从23增长到了609人,locust原理也是模拟http请求,所有在使用时候,需要有一个相对靠谱的网络环境,这样能减少外来因素影响结果。
工具还提供了一些其他功能,例如图表
错误信息统计
还有下载报告等,实践一下就能了解。
第二步:增加一下自定义内容
Locust也是通过python的requests库实现的http请求,所有在使用 l.client.get()或l.client.post()时候的参数,可以查看requests的使用文档,例如我们想给请求增加一个header
defindex(l):
l.client.trust_env =False
headers['User-Agent'] = random.choice(user_agent_list)
l.client.get("/",headers=headers)
增加一个代理proxy
defindex(l):
l.client.trust_env =False
headers['User-Agent'] = random.choice(user_agent_list)
proxies = {'http': random.choice(pro)}
l.client.get("/",headers=headers,proxies=proxies)
这样我们再看服务端接收日志的时候,就能完善模拟的效果
注意:虽然我们这样就有些类似攻击行为,但是这种事情因人而异,我们日常开发中,确实需要这样操作的需求,希望读者不要误会
领取专属 10元无门槛券
私享最新 技术干货