• 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博客专家


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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据每日经济新闻今天傍晚报道,日前有消息称,Stellantis 集团正在考虑向中国车企出售旗下超豪华汽车品牌玛莎拉蒂,该品牌有望被奇瑞拿下。对此,奇瑞方面的回复为“并无相关消息”。  关于奇瑞和玛莎拉蒂两家车企的传闻可追溯至今年 4 月 14 日。奇瑞董事长在驾驶星纪元 ET 进行长途高速高阶智驾挑战直播时透露,欧洲两家豪华品牌将用奇瑞平台生产高端汽车。“某欧洲豪华品牌要用星途星纪元的技术平台造车,有一家已接近落实签约,另一个海外品牌也在谈。”  有不具名知情人士称,和奇瑞汽车谈合作的欧洲豪华品牌大概是玛莎拉蒂。据IT之家此前报道,尹同跃曾在 4 月放话称,星途星纪元品牌“要往高端走”,要...
            0 0 426
            分享
          •   日本国会已经完成了一项与欧盟非常相似的举措,即制定一项法律,禁止大型科技公司阻挡第三方应用程序商店的出现。该法案于 5 月在日本众议院获得通过,现在又于周三在参议院获得通过。根据现行程序,该法案无需经天皇签署即可成为法律。  该法案旨在促进竞争,降低应用程序价格。据报道,日本政府认为苹果和Google是双头垄断企业,它们向开发者收取高额费用,然后再转嫁给用户。  拥有应用商店的大型科技公司也将禁止公司优先使用自己的服务,Google可能受此打击最大。  违法者最初将被处以最高为违法具体服务国内收入 20% 的罚款。如果被罚主体放任这种行为持续下去,罚款可能会增加到 30%。  日本政府的公...
            0 0 382
            分享
          •   临近年底,很多公司都有年终总结环节,核心目的发现今年的不足,进而总结经验,更好地用以指导明年的工作。当然,即使公司没有要求,对于测试岗位来说,一年一度的总结不可或缺。  假如你是测试负责人,更有必要让团队员工进行汇总总结,通过梳理自己工作上的不足及经验、可以提升工作效率,而且能够有效提升团队成员的责任心。  下面就最近的年终总结相关问题进行了梳理,包括总结的整体思路及总结亮点分别阐述。  总结内容应包括哪些  我们每做一件事情前都应有一个整体的规划,比如做测试前会有测试计划,每日开始工作前,会有每天的工作计划等等,这些好比是考试前的大纲,根据大纲逐条突破,才能取得高分。  做总结也是如此,...
            0 0 1573
            分享
          • 什么是单元测试在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元以确定它们是否适合使用。 单元是最小的可测试软件组件, 它通常执行单个内聚功能。单元测试就是是指对这个最小可测试组件——即单元进行检查和验证。单元体量小,因此比大块代码更容易设计、执行、记录和分析测试结果。 通过单元测试发现的缺陷很容易定位,并且相对容易修复。单元测试的目标是将程序分离成各自独立的部分,并测试各个部分是否正常工作。它将可测试软件的最小部分与代码的其余部分隔离开来,并确定其行为是否与预期的完全一致。单元测试能在使用过程中发现很多缺陷,在这种过程中证明自身价值。它实现了测试过程的自动化,减少...
            11 11 1597
            分享
          • 什么是接口测试?怎样做接口测试?内容:什么是接口?接口都有哪些类型?接口的本质是什么?什么是接口测试?问什么要做接口测试?怎样做接口测试?接口测测试点是什么?接口测试都要掌握哪些知识?其他相关知识?1.什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用...
            1 1 839
            分享
      • 51testing软件测试圈微信