Locust 是一个用 Python 编写的开源的负载测试工具。 它允许您针对模拟用户行为的 Web 应用程序编写测试,然后按规模运行测试以帮助查找瓶颈或其他性能问题。

安装

安装是使用 Python 常用的工具 pip 完成的:$pip install locustio

配置

Locust 最好的功能之一是通过”Plain Old Python”1 完成配置。您只需创建一个名为 locustfile.py 的文件,为您的负载测试任务进行所有配置,并在其中进行测试。

下面是 locustfile.py 的一个例子,它定义了一个简单的用户行为,它由一个获取特定网页的“任务”组成:from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

@task

def get_something(self):

self.client.get("/something")

class WebsiteUser(HttpLocust):

task_set = UserBehavior

我们再来添加第二个任务:class UserBehavior(TaskSet):

@task

def get_something(self):

self.client.get("/something")

@task

def get_something_else(self):

self.client.get("/something-else")

当上面的 UserBehavior 运行时,Locust 将在每个任务之间随机选择并运行它们。 如果你想为不同的任务定义权重,那么你可以按照下面的方法来加权:class UserBehavior(TaskSet):

@task(2)

def get_something(self):

self.client.get("/something")

@task(1)

def get_something_else(self):

self.client.get("/something-else")

权重定义了所有任务执行的比例,所以这里 get_something 在负载测试中的频率会是 get_something_else 的两倍。

您也可以编写嵌套的任务,以执行一系列连续的或有特殊顺序的任务。 这使您可以通过多个请求来定义用户操作流。 例如:class UserBehavior(TaskSet):

@task

def get_something(self):

self.client.get("/something")

@task

def get_something_else(self):

self.client.get("/something-else")

@task

def get_two_things(self):

self.get_something()

self.get_something_else()

TaskSet 类可以有选择地声明一个 on_start 函数,当模拟用户开始执行该 TaskSet 类时会调用该函数。 在开始负载测试之前,可以使用它来登录:class UserBehavior(TaskSet):

def on_start(self):

self.client.post("/login", {

'username': 'foo', 'password': 'bar'

})

@task

def get_something(self):

self.client.get("/something")

在本地运行

要运行 Locust,可以在与 locustfile.py 相同的目录下运行 locust 命令:$ locust --host=http://localhost:5000

一旦命令运行,Locust 启动一个本地 Web 服务器,您可以在浏览器中访问:

选择用户数量和用户产生速率后,您可以开始测试,这将显示正在运行的测试的实时视图:

分布式运行

在本地运行对于开始使用 Locust 和基本的测试来说是好的,但是如果您只是从本地机器运行它,大多数应用程序将不会收到很大的负载。在分布式模式下运行它几乎是不可避免的。用户可以轻松使用几个云节点来增加负载。

安装 Locust 并将 locustfile.py 移动到所有节点后,可以启动“主”节点:$ locust --host=http://localhost:5000 --master

然后启动任何 slave 节点,给他们对主节点的引用:$ locust --host=http://localhost:5000 --slave\

--master-host=192.168.10.100

不足

尽管 Locust 很好用,但是仍有有一些缺点。 首先,对于测试结果来说,统计信息相当糟糕(gen ben bu cun zai),或者说完全应该做得更好(例如,没有图表,并且不能在没有运行多个测试的情况下将增加的故障率与较高的负载相关联)。其次,有时候除了错误的状态外,很难获得错误响应的细节。 最后,做非 HTTP 或非 RESTful 请求的测试可能是会有一定复杂度的(尽管这很少见)。

优点

总的来说,Locust 是一个非常有用的负载测试工具,特别是作为一个开源项目。 如果您的代码库是基于 Python 的,由于有机会从现有的代码库中获取数据,模型或业务逻辑,所以这自然是您可以使用的最舒服的工具,但即使您不使用 Python,也可以轻松整合它。

本文来自投稿,不代表访得立场,如若转载,请注明出处:http://www.found5.com//view/1460.html

python模拟用户压力测试_Python 工具 Locust 进行负载测试相关推荐

  1. python 模拟用户点击浏览器_python爬虫之selenium模拟浏览器

    1.前言 之前在异步加载(AJAX)网页爬虫的时候提到过,爬取这种ajax技术的网页有两种办法:一种就是通过浏览器审查元素找到包含所需信息网页的真实地址,另一种就是通过selenium模拟浏览器的方法 ...

  2. python 模拟用户点击浏览器_python 模拟点击浏览器

    原标题:python 模拟点击浏览器 from selenium import webdriver #导入selenium的webdriver包,导入webdriver包后才能使用 webdriver ...

  3. python模拟网页点击_python模拟点击

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python怎么模拟点击网页按钮前提环境:python3 和 visual st ...

  4. python模拟购物车购物过程_Python 模拟购物车的实例讲解

    1.功能简介 此程序模拟用户登陆商城后购买商品操作.可实现用户登陆.商品购买.历史消费记查询.余额和消费信息更新等功能.首次登陆输入初始账户资金,后续登陆则从文件获取上次消费后的余额,每次购买商品后会 ...

  5. python模拟用户登录爬取阳光采购平台数据

    阳光采购平台每月初会把当月的价格挂到平台上,现模拟用户登录平台,将需要的数据保存到csv文件和数据库,并且发送给指定人员. 开发环境搭建: 网上教程一大堆,不赘述了.安装好后需要安装一些必须的库,如下 ...

  6. python模拟银行存取款_python 模拟银行转账功能过程详解

    首先画出流程图,流程图与现实代码有出入,因为刚开始画流程图的时候,有些东西没考虑进去,后来写着写着就慢慢能想起来并实现了. 另有一点经验推荐给新手朋友,如果说碰到一个项目无从下手的话,就先慢慢去写,写 ...

  7. python模拟登录详细教程_Python模拟登录requests.Session应用详解

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  8. python编辑用户登录界面_python编辑用户登入界面的实现代码

    1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...

  9. python模拟网页点击_python怎么模拟点击网页按钮

    python怎么模拟点击网页按钮 前提环境: Python3 和 Visual Studio Code安装完毕 . 安装selenium : 在终端输入: pip install selenium, ...

最新文章

  1. Java基础学习总结(21)——数组
  2. python程序跑得慢_Python程序慢的重要原因
  3. simulated annealing
  4. 达梦工作笔记-达梦客户端,执行命令后要保存退出,才生效
  5. 动态规划-矩阵连乘问题
  6. ICE专题:编译环境构建
  7. Centos6.x安装mysql5.6版本
  8. Android快速开关机
  9. 项目2-Time类中的运算符重载
  10. c和c++中 typedef struct与struct,以及 typedef struct LNode *list
  11. 【控制工程】自动控制原理和系统建模
  12. 年轻人频繁辞职的主要原因是什么呢?
  13. Tableau 2022.3的Table Extension到底怎么用?
  14. 一般哪个企业邮箱好用
  15. android备份固件,安卓固件管家(Rom Manager Premium)
  16. 时间序列数据分析与预测之Python工具汇总
  17. ICML 2018 paper(oral)
  18. 2023考研辅导机构:考研复试调剂十大问题答疑
  19. 笔记:Linux环境C语言复习(16)// 网络
  20. 英语学习详细笔记(六)比较级

热门文章

  1. mysql语句的执行顺序_SQL语句完整的执行顺序(02)
  2. vant组件搜索并选择_Vue.js自定义弹层组件|vue仿微信/ios弹窗
  3. pycharm 运行程序时提示错误信息:ModuleNotFoundError: No module named 'pytest' 解决方法
  4. tensorflow1.11.0 tf.constant()函数(创建一个常数张量)
  5. PyQt标准框——QInputDialog(二)
  6. pip安装pytorch 速度更快
  7. Spring Cloud Alibaba:Sentinel 熔断降级
  8. xftp提示过期的解决方法
  9. java操作字符串的工具类StringUtil
  10. cmd52命令发送 mmc_Linux SD/MMC/SDIO驱动分析(新)