[Locust-性能测试框架]

  • 能用性能测试框架locust编写性能脚本
  • 能使用locust实现分布式

Locust简介安装

简介
  • Locust : 开源性能测试工具
  • 特点 :
    • 可在代码中定义用户行为
    • 支持分布式及扩展
    • 通过测试验证模拟战地游戏并发
    • 简洁的用户界面,可跨平台使用
基本使用
  • 步骤:
    1. 导包 : from locust import TaskSet,HttpLocust,task
    2. 创建任务集和任务
      • 定义任务类,从TaskSet继承
      • 从类内添加任务,@task任务的实现与定义方法
    3. 定义用户行为
      • 绑定任务task_set=任务类类名
      • 设置用户间最小延迟时间min_wait
      • 设置用户间最大延迟时间max_wait
      • 指定主机地址 host=
from locust import TaskSet,HttpUser,task
# 定义任务集和任务
class Task(TaskSet):
    pass

# 定义用户的行为
class User(HttpUser):
    pass
实现
from locust import TaskSet, HttpUser, task, between

# 定义任务集和任务
class Task(TaskSet):
    # 访问首页
    @task
    def index(self):
        result = self.client.get("/")
        print("响应结果:", result.text)

# 定义用户的行为
class User(HttpUser):
    # 绑定任务 - 使用 tasks 列表
    tasks = [Task]  # 注意这里是列表,且类名不需要括号,且task_set 属性已弃用

    # 设置等待时间
    min_wait = 1000
    max_wait = 3000

    # 指定主机地址
    host = "https://tlias-stu.boxuegu.com/"

在这里插入图片描述

在这里插入图片描述

  • 100 : 模拟的并发用户数
  • 10 : 每秒产生的用户数
  • Host : 待访问的域名,与代码中的一致
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
执行任务的比重
  • 在@task后添加()写入设定的比重值即可
  • 混合业务场景,500用户并发访问,登录80,注册20,搜索商品200,首页150,下单50
"""500用户并发访问,登录80,注册20,搜索商品200,首页150,下单50"""
from locust import TaskSet, HttpUser, task, between
# 定义任务集和任务
class Task(TaskSet):
    # 登录
    @task(8)
    def login(self):
        result = self.client.get("/?name=login")
        print("响应结果:", result.text)

    # 注册
    @task(2)
    def register(self):
        result = self.client.get("/?name=register")
        print("响应结果:", result.text)


    # 搜索
    @task(20)
    def search(self):
        result = self.client.get("/?name=search")
        print("响应结果:", result.text)

    # 首页
    @task(15)
    def page(self):
        result = self.client.get("/?name=page")
        print("响应结果:", result.text)

    # 下单
    @task(5)
    def order(self):
        result = self.client.get("/?name=order")
        print("响应结果:", result.text)

# 定义用户的行为
class User(HttpUser):
    # 绑定任务 - 使用 tasks 列表
    tasks = [Task]  # 注意这里是列表,且类名不需要括号
    # 设置等待时间
    min_wait = 1000
    max_wait = 3000
    # 指定主机地址
    host = "https://www.baidu.com"

在这里插入图片描述

on_start
class Task(TaskSet):
    def on_start(self):
        print("任务开始了-----")
    def on_stop(self):
        print("任务结束了-----")
  • 在每个方法执行前被自动调用一次,类似于setup_method()方法
on_stop
  • 类似于teardown_method()方法
locust 分布式
  • 实现 :
    • locust 实现分布式,需要在脚本启动时给控制机,执行机指定不同的参数
    • 要求控制机与执行机都位于同一个网段!!!
    • 控制机 : --master
    • 执行机 : --worker --master-host = 控制机IP
  • 启动控制机 :
    在这里插入图片描述
  • 启动执行机(写入执行机的ip地址) :

在这里插入图片描述
由于控制机和执行机在同一台电脑上,所以可以使用127.0.0.1
在这里插入图片描述
在这里插入图片描述

使用没有web的locust

使用参数指定 ui界面中的东西
-f : 脚本文件名
–headless : 不以web页面形式运行
-u : 用户数
-r : 1s启动用户数
-t : 运行时间,秒s,分m,小时h,1h30min10s
–csv : 生成csv结果文件

locust -f ./py04_distribute.py --headless -u 500 -r 50 -t 20s --csv data
  • 生成的文件
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值