一、Locust介绍
一个开源性能测试工具,使用 Python 代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统,方便、高效、可分布式等
二、工具安装
环境python3 pip install locust pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn locust
三、locust类库介绍
Locust官方文档
Httpuser类:就是用户行为的操作 Client方法:发送请求 Task类:任务控制的类,权重,跳过等 Taskset类:测试集类 On_start方法:类似于自动化中的setup,每个虚拟用户执行前都会执行这个方法 On_stop方法:类似于自动化中的teardown,每个虚拟用户执行结束后执行这个方法 @task装饰器,如果task后面带有数字,则代表的是测试集中的权重。参数越大每次被虚拟用户执行的概率越高。如果不设置默认为1 Between方法中的是休眠时间:会取between数值中间的随机数 Locust中还有其他很多类,我暂时没用到,有兴趣可以下去了解下,非常不错的一款性能工具
四、locust使用
Windows
我这里使用的是云服务器2c4g, 带宽:8Mbps
代码:以登录vsite网站来压吧 100并发
# coding=utf-8 """ @Project :pachong-master @File :test001.py @Author :gaojs @Date :2022/5/19 21:47 @Blogs : https://www.gaojs.com.cn """ from locust import HttpUser, between, task, TaskSet, tag import os # 强制去掉控制台InsecureRequestWarning import urllib3 # 随机产生UA类库 from faker import Factory urllib3.disable_warnings() class TaskTest(TaskSet): def on_start(self): """ description:每个用户执行压测之前都会获取随机数和数字签名 :return: """ # 每个用户执行压测之前都会获取随机数和数字签名 # print('====================清理log结束,压测开始, 获取随机数和数字签名!!!========================') pass # 压测任务,也可以是@task(10)啥的,这个数字是代表权重,数值越大,执行的频率就越高 @task def stress_get(self): """ 登录虚拟站点 :return: """ url = '/prx/000/http/localh/login' data = { "Content-Type": "application/x-www-form-urlencoded, charset=UTF-8", 'Connection': 'close', "method": "method1", "uname": "t", "pwd1": None, "pwd2": None, "pwd": "t", "submitbutton": "Sign In" } randon_ua = Factory.create() ua = randon_ua.user_agent() headers = { 'User-Agent': ua } rsp = self.client.post(url=url, headers=headers, data=data, verify=False, allow_redirects=False, name='loginVsite压测') # print(rsp.status_code) print(rsp.text) assert rsp.status_code == 302 # 执行并发测试后执行的动作,比如保存log等操作,查看报告http://localhost:8089/ def on_stop(self): pass class UserBehavior(HttpUser): host = '192.168.120.209' # 每次请求停顿时间 wait_time = between(3, 10) tasks = [TaskTest] if __name__ == "__main__": os.system("locust -f test004.py --host=https://192.168.120.209 --web-host=127.0.0.1")
执行
十秒起100个虚拟用户
报告
charts
RPS
分析结果:
平均相应时间: 吞吐量:1000以内 最小相应时间: 最大响应时间: 网络是否有波动: 带宽是否影响: