Locust:简介和基本用法
我个人在性能测试工作中,负载生成工具使用的大多都是jmeter,之前学习python时顺带了解过python开源的性能测试框架locust。
这篇博客,简单介绍下locust的使用方法,仅供参考。。。
官方文档:Locust说明文档
一、认识Locust
1、定义
Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。
2、特点
①、不需要编写笨重的UI或者臃肿的XML代码,基于协程而不是回调,脚本编写简单易读;
②、有一个基于we简洁的HTML+JS的UI用户界面,可以实时显示相关的测试结果;
③、支持分布式测试,用户界面基于网络,因此具有跨平台且易于扩展的特点;
④、所有繁琐的I / O和协同程序都被委托给gevent,替代其他工具的局限性;
3、locust与jmeter的区别
工具 | 区别 |
jmeter | 需要在UI界面上通过选择组件来“编写”脚本,模拟的负载是线程绑定的,意味着模拟的每个用户,都需要一个单独的线程。单台负载机可模拟的负载数有限 |
locust | 通过编写简单易读的代码完成测试脚本,基于事件,同样配置下,单台负载机可模拟的负载数远超jmeter |
PS:但locust的局限性在于,目前其本身对测试过程的监控和测试结果展示,不如jmeter全面和详细,需要进行二次开发才能满足需求越来越复杂的性能测试需要。
二、安装Locust
1、支持的python版本:2.7、3.4、3.5、3.6;
2、Windows系统安装locust
①、直接通过 pip install locustio 命令安装;
②、通过为pyzmq、gevent和greenlet安装预先构建的二进制包,然后在这里找到非官方的预制包,下载.whl文件后,使用 pip install name-of-file.whl 命令安装;
安装成功后可以输入 pip show locust 命令查看是否安装成功,以及通过 locust -help 命令查看帮助信息。
安装:
pip install locust
如果安装成功的话
接着我们写个脚本:
# -*- coding: utf-8 -*-
# @File : test.py
# @API_name: test
# @Time : 2021/7/2217:07
# @Author : lch
from locust import HttpUser, TaskSet, task
import random
# 定义用户行为,继承TaskSet类,用于描述用户行为
# (这个类下面放各种请求,请求是基于requests的)
# client.get=requests.get
# client.post=requests.post
class test_viewers(TaskSet):
# task装饰该方法为一个事务方法的参数用于指定该行为的执行权重。参数越大,每次被虚拟用户执行概率越高,不设置默认是1
@task()
def test_viewersuv(self):
#用法和requests相同
header = {}
params = {"aid": random.randint(1, 1000)}
r = self.client.get("lch.tpshop.com", headers=header, params=params)
# 使用assert断言请求是否正确
# assert r.status_code == 200
# 这个类类似设置性能测试,继承HttpLocust
class websitUser(HttpUser):
# 指向一个上面定义的用户行为类
task_set = test_viewers
# 执行事物之间用户等待时间的下界,单位毫秒,相当于lr中的think time
min_wait = 3000
max_wait = 6000
接着我们用脚本来压测:
locust -f test.py --host=lch.tpshop.com
在页面输入下面的地址:
上面有2个输入框,多少用户数,每秒多少个并发请求。
接下来就会看到:
这个可以针对接口压测,接口请求参数写文本里面,模拟登录都可以在python脚本里面去做!
更多的参考:Locust说明文档