【python locust 压测】

本文详细介绍了如何使用Python编写Locust脚本来进行并发测试,包括清理session、执行登录任务、设置等待时间和断言验证。同时讲解了如何实现分布式压测,通过主控压力机管理和控制多个压力机来模拟大量用户负载。
摘要由CSDN通过智能技术生成

并发测试

第一步:编写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
注:每个主机可以根据核数,通过在终端多次执行命令,充分利用每个内核
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用PythonLocust来进行对ES7的压测。首先,确保你已经安装了PythonLocust。 接下来,你需要安装elasticsearch-py库,它是Python与Elasticsearch进行交互的库。可以使用以下命令安装: ``` pip install elasticsearch ``` 然后,创建一个Python脚本,导入必要的模块和库: ```python from locust import HttpUser, task, between from elasticsearch import Elasticsearch class ESUser(HttpUser): wait_time = between(1, 5) def on_start(self): # 创建一个Elasticsearch客户端连接 self.client = Elasticsearch(['localhost:9200']) @task def search(self): # 定义一个搜索任务 query = { "query": { "match_all": {} } } # 发送搜索请求 response = self.client.search(index='your_index', body=query) # 打印搜索结果 print(response) ``` 在上面的代码中,我们创建了一个名为ESUser的Locust用户类。在`on_start`方法中,我们创建了一个Elasticsearch客户端连接。 然后,在`@task`装饰的`search`方法中,我们定义了一个搜索任务。你可以根据自己的需求修改查询条件。在该方法中,我们发送了一个搜索请求,并打印了搜索结果。 最后,你可以在命令行中使用Locust命令来启动压测: ``` locust -f your_script.py --host=http://localhost:9200 ``` 替换`your_script.py`为你的脚本文件名,`http://localhost:9200`为你的ES7的地址。 然后,你可以在浏览器中访问Locust的Web界面(默认为http://localhost:8089)来配置并启动压测。 注意:在进行压测之前,请确保你已经在ES7中创建了索引,并且数据已经准备好。另外,压测会对目标系统造成一定的负载,请谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值