Python+locust编写性能测试脚本的几种方式

本文介绍了使用Python的Locust库进行性能测试的四种方法,包括直接在HttpUser中定义任务、将任务写在模块内、使用TaskSet以及SequentialTaskSet。Locust是一个用户友好的性能测试工具,支持实时显示测试进度和分布式负载测试。文中详细讲解了每种方法的实现步骤和注意事项,并提供了运行示例和非GUI模式下生成Html报告的命令。
摘要由CSDN通过智能技术生成

    复盘了一下locust编写性能测试脚本的基础,因为之前简单学过,最近忘了,又复盘了一下,省的学习新内容忘了之前的内容,里面一些解释纯粹自己个人理解,有不对的欢迎指出。

一、安装locust

pip install locust    -- 安装(在pycharm里面安装或cmd命令行安装都可)

locust -V                 -- 查看版本,显示了就证明安装成功了

二、locust介绍

  Locust 是一种易于使用、可编写脚本且可扩展的性能测试工具。并且有一个用户友好的 Web 界面,可以实时显示测试进度。甚至可以在测试运行时更改负载。它也可以在没有 UI 的情况下运行,使其易于用于 CI/CD 测试。

  Locust 使运行分布在多台机器上的负载测试变得容易。Locust 基于事件(gevent),因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序相比,它不使用回调。相反,它通过gevent使用轻量级进程。并发访问站点的每个Locust(蝗虫)实际上都在其自己的进程中运行(Greenlet)。这使用户可以在Python中编写非常有表现力的场景,而不必使用回调或其他机制。

三、脚本

1.方式一(直接在HttpUser中定义任务)

from locust import HttpUser, task, constant


class FlashUser(HttpUser):
    host = 'http://127.0.0.1:8080/'  
    wait_time = constant(1)

    @task
    def login_test(self):
        url = '/api/user/login'
        data = {"userName":"xuyang@test.ai","password":"xy123456"}
        headers = {"Content-Type": "application/json"}
        self.client.request(method='POST', url=url, data=data, headers=headers, name='login登录')

文字对照代码看哈

HttpUser:控制用户发请求的频率、用户的思考时间、设置主机的IP地址、也可以定义任务

@task:@task用来标记哪个方法是任务,什么任务,我要做性能测试执行哪个接口

host:被测系统,你要发送请求到哪个服务器

wait_time:每次请求的间隔、停顿时间、思考时间

constant:为固定的思考时间,这里可以简单理解为固定定时器(只是wait_time的其中一种等待时间的方式,其它的可以自己研究一下)

描述:

  1. 创建一个User类FalshUser, 继承HttpUser,然后定
  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值