并发测试
第一步:编写python脚本
from locust import HttpUser, between, task, TaskSet
import datetime,os,json,logging
class TaskTest(TaskSet):
# 执行并发前置动作,比如清理当前所有session
def on_start(self):
logging.info('清理log结束,压测开始!!!')
# 压测任务,也可以是@task(10),这个数字是代表权重,数值越大,执行的频率就越高
@task
def login(self):
url = '/auth/callback/login'
data = '{"terminal":"pc","lang":"zh-CN","face":"data:image/jpeg;base64,/9j/4AAQS}'
#注:data的值,需要加引号(‘’)
header = {"Content-Type": "application/json;charset=UTF-8","Terminal":"pc","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36","Requesttype":"Ajax"}
result= self.client.post(url=url, data=data, headers=header) #调接口请求,传入url、data、headers
text = json.loads(result.text) #获取接口响应
logging.info('接口返回'+str(result))
logging.info(str(text))
assert json.loads(result.text)['returnMsg'] == 'success' #增加断言,校验接口返回的数据是否符合预期
# 执行并发测试后执行的动作,比如保存log等操作,查看报告http://localhost:8089/
def on_stop(self):
logging.info('清理session结束,压测结束,请查看report, http://localhost:8089!!!')
class Login(HttpUser):
host = 'http://10.12.18.21' #服务器地址
# 每次请求停顿时间
wait_time = between(1, 3)
tasks = [TaskTest]
第二步:终端运行命令
locust -f [文件名]
例:locust -f face_login.py
第三步:打开浏标题览器界面,设置并发场景,查看监控
分布式并发
1.一个压力机目前能模拟发送10万个用户,想模拟100万甚至更多,要分布式性能压测
2.主控压力机去控制压力机1压力机2压力机n
3.分布式部署实施过程1准备工作:在每台压力机上安装locust=》把相关的测试脚本放在每台压力机上=》明确一台主控压力机=》在同一网段联网状态
4.分布式部署实施过程2命令执行方式:在主控压力机下输入命令locust -f xxx.py --master,在压力机上输入命令:locust -f xxx.py --slave --master -host=ip地址
5.分布式部署实施过程3设置虚拟用户
原文链接:https://blog.csdn.net/weixin_47547541/article/details/126482830
主控压力机命令:locust -f face_login.py --master #先执行
被控压力机命令:locust -f face_login.py --worker --master-host=10.170.144.27 #IP是主控压力的IP
注:每个主机可以根据核数,通过在终端多次执行命令,充分利用每个内核