栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于python locust库实现性能测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于python locust库实现性能测试

Locust(俗称 蝗虫), 一个轻量级的开源压测工具,用Python编写。

安装

pip3 install locust

Python编写性能测试脚本

import json

from locust import HttpLocust, TaskSet, task

"""
创建后台管理站点压测类,需要继承TaskSet
可以添加多个测试任务
"""


class AdminLoadTest(TaskSet):

  # 用户执行task前调用
  def on_start(self):
    pass

  # 用户执行task后调用
  def on_stop(self):
    pass

  @task(1)
  def download(self):
    header = {"Content-Type": "application/json"}
    data = {
      "staff_id": 94
    }
    data = json.dumps(data)
    self.client.post('/get_know_list', data=data, headers=header)

  @task(2)
  def body(self):
    header = {"Content-Type": "application/json"}
    data = {
      "staff_id": 94
    }
    data = json.dumps(data)
    self.client.post('/get_answer_list', data=data, headers=header)


class RunLoadTests(HttpLocust):
  """
  创建运行压测类
  """
  task_set = AdminLoadTest
  min_wait = 1000
  max_wait = 50000
  weight = 1
if __name__ == "__main__":
  import os

  os.system("locust -f test_download.py --host=http://127.0.0.1:5000")

AdminLoadTest类继承TaskSet类,用以描述用户行为:

使用@task装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1(事务blogs()被执行的概率是bky_index()的2倍);

  • on_start():每个locust用户执行测试事务之前执行一次,用于做初始化的工作,如登录;
  • on_stop(): 每次执行完测试事务之后执行一次。
  • RunLoadTests类用于设置性能测试属性:
  • task_set:指向定义的一个用户行为类;
  • min_wait:模拟用户在执行每个任务之间等待的最小时间,单位为毫秒;
  • max_wait:模拟用户在执行每个任务之间等待的最大时间,单位为毫秒(min_wait和max_wait默认值为1000,因此,如果没有声明min_wait和max_wait,则locust将在每个任务之间始终等待1秒。);
  • weight:一个文件中有多个locust用户类时,指定用户类的权重(默认新增locust用户时会随机选择一个用户类);

启动

终端进入代码目录,输入 locust -f start.py --host=http://localhost:5000

使用os.system在代码里面写入启动命令

各个参数的含义

  • -f : 指定要运行的测试脚本文件
  • --host : 要加载主机的URL前缀,不指定时,读取WebsiteUser类中定义的host;
  • --master : 单台机器不能模拟更多用户时,分布式模式,通过--master指定主进程;打开Locust的web界面

使用上面的命令行启动Locust之后,应该打开浏览器并将其指向http://localhost:8089/(如果您在本地运行Locust)。

Number of total users to simulate : 设置模拟用户数;Hatch rate(users spawned/second) : 每秒产生(启动)的虚拟用户数;

设置好模拟用户后,点击Start swarming开始测试,测试结果如下:

  • Type   :请求的类型,如GET/POST;
  • Name :请求的路径;
  • request :已发出请求数量;
  • fails :请求失败的数量;
  • Median :响应时间的中间值(单位:毫秒);
  • Average :平均响应时间(单位:毫秒);
  • Min :请求的最小响应时间(单位:毫秒);
  • Max :请求的最大响应时间(单位:毫秒);
  • Content Size:单个请求的大小(单位:字节);
  • reqs/sec:每秒钟请求的个数;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/134180.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号