• 1
  • 0
分享

11、ResponseContextManager class

11.1 定义

class ResponseContextManager(response,request_success,request_failure)

---->>Response类还可以用作上下文管理器。

该类提供手动控制HTTP请求,在Locust统计信息为成功还是失败的能力。

状态有两个:success 和 failure

11.2 类及用法

①failure(exc)

定义解析:

    ---->>失败。

    如果exc 是python内部的(例如字符串),将在CatchResponseError中。

举个例子

# -*- coding: utf-8 -*-
"""
@ auth : Carl_奕然
@ time : 2022-06-24
"""
with self.client.get("/", catch_response=True) as response:
    if response.content == b"":
        response.failure("No data")

②success()

定义解析:

    ---->>成功。

举个例子

# -*- coding: utf-8 -*-
"""
@ auth : Carl_奕然@ time : 2022-06-24
"""
with self.client.get("/does/not/exist", catch_response=True) as response:
    if response.status_code == 404:
        response.success()

12、Exceptions

12.1 exception InterruptTaskSet

exception InterruptTaskSet(reschedule=True)

定义解析:

---->>抛出任务时会中断用户的异常。

12.2 exception RescheduleTask

exception RescheduleTask

定义解析:

---->>在任务中,相当于return语句功能。

当不在TaskSet内部,则会移交给父TaskSet。

12.3 exception RescheduleTaskImmediately

exception RescheduleTaskImmediately

定义解析:

---->>当在用户任务中引发时,会立即重新调用另一个用户任务,(无需先调用wait_time)。

13、Environment class

13.1 定义

class Environment(*, user_classes=[], shape_class=None, tags=None, exclude_tags=None, events=None, host=None, reset_stats=False, stop_timeout=None, catch_exceptions=True, parsed_options=None)

13.2 类及应用

①catch_exceptions= True

定义解析:

---->>捕获正在运行中出现的异常,在 Web UI或者中控台中显示。

②create_local_runner()

定义解析:

---->>创建一个local_runner 这个实例。

参数解析:

・ environment:环境实例

③create_master_runner

定义解析:

---->>创建一个master_runner这个实例。

格式如下:

create_master_runner(master_bind_host = '*',master_bind_port = 5557)

参数解析:

・ master_bind_host :需要连接的主服务器的地址,默认为“”,表示所有接口

・ master_bind_port :需要连接的主服务器的端口号

④create_web_ui

定义解析:

---->>创建一个Web_UI这个实例,并运行。

格式如下:

create_web_ui(host='', port=8089, auth_credentials=None, tls_cert=None, tls_key=None, stats_csv_writer=None, delayed_start=False)

参数解析:

・ host :Web服务器应接受其连接的主机/接口。默认为“”,表示所有接口

・ port :监听端口号

・ auth_credentials :基本身份认证

・ tls_cert – :TLS证书路径,

・ tls_key :TLS私钥可选路径

・ stats_csv_writer :StatsCSV <stats_csv.StatsCSV>实例

・ delay_start :是否延迟启动web UI直到调用start()

⑤create_worker_runner

定义解析:

---->>创建一个worker_runner这个实例。

格式如下:

create_worker_runner(master_host,master_port

参数解析:

・ master_host :正在运行的主节点的主机/ IP

・ master_port :主节点上要连接的端口

⑥events

定义解析:

---->>Locust内部使用的事件。

可以参考 本篇: 6、Event hooks

⑦exclude_tags

定义解析:

---->>如果设置,则仅执行此列表中未标记的任务。

格式如下:

exclude_tags= None

⑧host

定义解析:

---->>目标系统的 URL地址。

格式如下:

str = None

⑨parsed_options

定义解析:

---->>对已解析的命令行选项的可选引用(用于预填充Web UI中的字段)。

格式如下:

parsed_options= None

⑩process_exit_code

定义解析:

---->>若设置,则使Locust退出当前进程。

格式如下:

process_exit_code:int= None

⑪reset_stats

定义解析:

---->>确定在生成所有模拟用户后是否应重置统计信息。

格式如下:

reset_stats= False

⑫runner

定义解析:

---->>若设置,则使Locust退出当前进程。

格式如下:

 locust.runners.Runner= None

⑬shape_class

定义解析:

---->>控制负载测试的形态类。

格式如下:

locust.shape.LoadTestShape = None

⑭stats

定义解析:

---->>引用RequestStats实例。

格式如下:

locust.stats.RequestStats = None

⑮stop_timeout

定义解析:

---->>设置等待超时时间,超过时间后,将会终止进程。

格式如下:

stop_timeout = None

⑯tags

定义解析:

---->>若设置,则仅执行由该列表中的标签标记的任务。

格式如下:

tags = None

⑰user_classes

定义解析:

---->>运行程序的 user类。

格式如下:

list[locust.user.users.User] = []

⑱web_ui

定义解析:

---->>对web_ui实例的引用。

格式如下:

locust.web.WebUI = None

14、Event hooks

14.1 class Events

①init

定义解析:

---->>一旦创建了Environment实例和locust运行器实例后,在启动Locust时触发。最终用户的代码可以使用此挂钩来运行需要访问环境的代码。例如,将侦听器注册到request_success,request_failure或其他事件。

参数解析:

・environment:环境实例

②init_command_line_parser

定义解析:

---->>可用于将命令行选项添加到Locust事件中。

参数解析:

・parser:解析器,来运行 ArgumentParser 实例

③quitting

定义解析:

---->>Locust退出进程时,触发此动作。

参数解析:

・environment :环境实例

④report_to_master

定义解析:

---->>在worker状态下运行时才被调用。

可以将数据定期发送到主服务器的字典上,同时会定期触发把报告发送到服务器的动作。

注意:在"stats"和"errors"这两个状态,不需要触发这个动作

参数解析:

・client_id :正在运行的客户端 ID

・data: 可发送到主数据库的数据的字典

⑤request_failure

定义解析:

---->>请求失败时触发。

参数解析:

・request_type :请求类型

・response_time:引发异常请求时间(单位:毫秒)

・response_length :响应内容长度

・exception:抛出异常实例

・name:调用URL的路径

⑥request_success

定义解析:

---->>请求成功完成时触发。

参数解析:

・request_type :请求类型

・response_time:引发异常请求时间(单位:毫秒)

・response_length :响应内容长度

・name:调用URL的路径

⑦reset_stats

定义解析:

---->>在Web UI中 “重置统计信息” 的按钮。

⑧spawning_complete

定义解析:

---->>产生所有模拟用户时触发。

参数解析:

・user_count :用户数

⑨test_start

定义解析:

---->>负载测试开始。

如果用户数量在测试期间更改,则不会再次触发;

如果运行Locust分布式时,仅在主节点上而不在每个辅助节点上触发该事件。

⑩test_stop

定义解析:

---->>测试停止。

仅在主节点而非每个子节点上触发该事件。

⑪user_error

定义解析:

---->>User类异常是触发。

参数解析:

・user_instance :异常的用户类实例

・exception:抛出异常实例

・tb:追溯对象(来自e .__ traceback__)

⑫worker_report

定义解析:

---->>在master模式下运行是使用。

当主服务器从worker服务器接收报告时会触发此事件。

参数解析:

・client_id :正在运行的客户端 ID

・data: 带有工作节点数据的 数据字典

14.2 class EventHook

class EventHook

这是简单事件类,同样为Locust中不同类型的事件提供Hook。

举个例子

# -*- coding: utf-8 -*-
"""
@ auth : Carl_奕然@ time : 2022-06-24
"""
#设置事件为EvnentHook
my_event = EventHook()
def on_my_event(a,b,**kw):
#print("Event was fired with arguments: %s, %s" % (a, b))
print(f"Event wa fired with arguments :{a},{b}")
#在事件添加监听器
my_event.add_listener(on_my_enent)
my_event.fire(a="foo", b="bar")

15、Runner classes

15.1 class Runner

15.1.1 定义

定义解析

---->>通过启动和停止用户来进行负载测试。

在Environment 实例上使用这三个create_local_runner, create_master_runner或者 create_worker_runner 其中的一种来创建所需要的运行器。

格式如下

class Runner(environment)

15.1.2 类及用法

①quit

---->>停止或者直接终止任务在运行的程序。

②start(user_count, spawn_rate, wait=False)

---->>开始运行。

参数解析

・user_count: 启动用户数

・spawn_rate:每秒产生用户数

・wait:True,等待产生所有用户数,(相当于集合点);False(默认),会启动生成用户的绿色按钮,并且对该方法的调用将进行返回。

③stop()

---->>通过停止所有正在运行的用户来停止正在运行的负载测试.

15.2 class MasterRunner

15.2.1 定义

定义解析

① 用于跨多个进程/机器进行分布式负载测试;

②Master Runner 本身不会产生任何用户行为,相反,它希望Worker Runner连接到它,然后它将引导启动和停止用户行为,对Worker Runner返回的信息进行汇总。

格式如下

class MasterRunner(environment, master_bind_host, master_bind_port)

15.3 class LocalRunner

15.3.1 定义

定义解析

---->> 运行单个进程负载测试的运行程序。

格式如下

class LocalRunner(environment)

15.4 class WorkerRunner

15.4.1 定义

定义解析

①用于跨多个进程/机器进行分布式负载测试;

②WorkerRunner连接到MasterRunner,它将从中接收启动和停止用户行为的说明;

③WorkerRunner将定期获取正在运行的用户生成的统计信息,并将其发送回MasterRunner。

格式如下

class WorkerRunner(environment, master_host, master_port)

16、总结

关于Locust的API汇总就到这里了,共整理了三篇, 如下:

    《深聊性能测试之:Locust性能自动化(五)API汇总整(上)》

    《深聊性能测试之:Locust性能自动化(五)API汇总整(中)》

    《深聊性能测试之:Locust性能自动化(五)API汇总整(下)》


我是Carl_奕然


51Testing认证讲师

CSDN博客专家


关注我,带你学习更多更专业的测试开发知识。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用例是否充分,去更精准的定位问题。而对于功能测试或者接口测试比较少的去关注覆盖率数据,功能测试时覆盖率的收集也是比较困难的。然后对于功能测试而言进行代码覆盖率的收集有利于测试工程师去判断哪些分支没有被覆盖,判断是否是设计用例的时候没有做到覆盖,又或者是由于存在bug使得无法覆盖到,从而更精准的去定位bug的位置,去分析问题,节省时间。 二、工具简介 对于java的代码覆盖率的收集,比较常用的工具有emma、jacoco,它们都是免费的代码覆盖率工具。emma目前已经不维护,Ec...
            4 3 2354
            分享
          • 单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和自动化测试工具,什么unittest, testtools, subunit, coverage, testrepository, nose, mox, mock, fixtures, discover,再加上setuptools, distutils等等这些,先不说如何写单元测试,光是怎么运行单元测试就有N多种方法,再因为它是测试而非功能,是很多人没兴趣触及的东西。但是作为一个优秀的测试人员,写好测试代码可以彰显你的实力。如此多的框架和工具,很容易让人困惑,困惑的原因是因为并没有理解它的基本原理,如果一些基本的概念都不清...
            11 11 1594
            分享
          • 1. Android 调试桥adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,然后根据其具体的路径配置好环境变量。然后启动cmd 输入‘adb’即可查看是否配置成功。2. adb工作原理启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它...
            0 0 2430
            分享
          • 在构建软件系统时,测试是软件开发工作流程的必不可少的部分之一。作为软件开发人员,都希望编写的程序按预期工作。程序没有BUG,测试可以协助这个目标的达成。本文将讨论一种称为单元测试的测试方法。什么是单元测试?应该如何实施?单测优点和局限性是什么?什么是单元测试单元测试的目标是隔离程序的每个部分并显示各个部分按预期工作。单元测试是由软件开发人员编写和运行的自动化测试,以确保应用程序的一部分(称为单元)按预期工作。单元是可以在系统中逻辑隔离的最小代码段。这可以是单个函数、方法、过程、模块、类或对象。通常,一个单元有几个输入和一个输出。单元测试由软件开发人员在应用程序的开发(编码阶段)期间完成。只有各...
            0 0 846
            分享
          • 读者提问:免费好用的在线 PDF 转换工具有推荐的吗 ?阿常回答:有,这 6 款在线 PDF 转换工具,免费实用,快来试试吧!1、pdftoword(支持 PDF 与 Word、TXT、图片、HTML等文件之间相互转化)官网地址:https://pdftoword.55.la2、迅捷PDF(支持文档转换、文档处理、文档翻译、图片文字识别等超多强大功能)官网地址:https://www.xunjiepdf.com3、SmallPDF(支持 PDF 转换、PDF 编辑、 PDF 处理等 PDF 管理功能)官网地址:https://smallpdf.com4、hiPDF(一站式 ...
            0 0 1631
            分享
      • 51testing软件测试圈微信