class ResponseContextManager(response,request_success,request_failure)
---->>Response类还可以用作上下文管理器。
该类提供手动控制HTTP请求,在Locust统计信息为成功还是失败的能力。
状态有两个:success 和 failure
①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()
exception InterruptTaskSet(reschedule=True)
定义解析:
---->>抛出任务时会中断用户的异常。
exception RescheduleTask
定义解析:
---->>在任务中,相当于return语句功能。
当不在TaskSet内部,则会移交给父TaskSet。
exception RescheduleTaskImmediately
定义解析:
---->>当在用户任务中引发时,会立即重新调用另一个用户任务,(无需先调用wait_time)。
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)
①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
①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: 带有工作节点数据的 数据字典
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")
定义解析
---->>通过启动和停止用户来进行负载测试。
在Environment 实例上使用这三个create_local_runner, create_master_runner或者 create_worker_runner 其中的一种来创建所需要的运行器。
格式如下
class Runner(environment)
①quit
---->>停止或者直接终止任务在运行的程序。
②start(user_count, spawn_rate, wait=False)
---->>开始运行。
参数解析
・user_count: 启动用户数
・spawn_rate:每秒产生用户数
・wait:True,等待产生所有用户数,(相当于集合点);False(默认),会启动生成用户的绿色按钮,并且对该方法的调用将进行返回。
③stop()
---->>通过停止所有正在运行的用户来停止正在运行的负载测试.
定义解析
① 用于跨多个进程/机器进行分布式负载测试;
②Master Runner 本身不会产生任何用户行为,相反,它希望Worker Runner连接到它,然后它将引导启动和停止用户行为,对Worker Runner返回的信息进行汇总。
格式如下
class MasterRunner(environment, master_bind_host, master_bind_port)
定义解析
---->> 运行单个进程负载测试的运行程序。
格式如下
class LocalRunner(environment)
定义解析
①用于跨多个进程/机器进行分布式负载测试;
②WorkerRunner连接到MasterRunner,它将从中接收启动和停止用户行为的说明;
③WorkerRunner将定期获取正在运行的用户生成的统计信息,并将其发送回MasterRunner。
格式如下
class WorkerRunner(environment, master_host, master_port)
关于Locust的API汇总就到这里了,共整理了三篇, 如下:
《深聊性能测试之:Locust性能自动化(五)API汇总整(上)》
《深聊性能测试之:Locust性能自动化(五)API汇总整(中)》
《深聊性能测试之:Locust性能自动化(五)API汇总整(下)》
我是Carl_奕然,
51Testing认证讲师
CSDN博客专家
关注我,带你学习更多更专业的测试开发知识。