Locust性能自动化—API汇总整理(下)

1、HttpSession class

1.1 定义

定义解析:用于执行web请求和在请求之间保留 cookie的类。记录每个请求,以便Locust可以显示统计信息。

这是python-requests的requests.Session 的扩展版,大多数情况下,工作原理都相同。

每次发送请求的方法带两个可选参数,这是locust的特性,并且这些参数在python-requests中是不存在的。

参数解析:

  • name :可选,可以指定为在Locust的统计信息中用作标签,而不是URL路径。
  • catch_response :可选布尔型参数,如果设置了该参数,则可用于发出请求,以返回上下文管理器以用作with语句的参数。
    即使响应代码正常(2xx),也可以根据响应的内容将请求标记为失败。相反的方法也可行,即使没有响应代码(即500或404),也可以使用catch_response来捕获请求,然后将其标记为成功。

1.2 类及用法

_ init _ :初始化。

格式如下:

__init__(base_url,request_success,request_failure,*args,**kwargs)

delete:发送一个DELETE请求。返回Response对象。

格式如下:

delete(url,**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • kwargs:可选参数。

返回类型:

  • requests.Response

get:发送get请求。返回Response对象。

格式如下:

get(url,**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • kwargs:可选参数。

返回类型:

  • requests.Response

head:发送一个head请求。返回Response对象。

格式如下:

head(url,**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • kwargs:可选参数。

返回类型:

  • requests.Response

options:发送一个options请求。返回Response对象。

格式如下:

options(url,**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • kwargs:可选参数。

返回类型:

  • requests.Response

patch:发送一个patch请求。返回Response对象。

格式如下:

options(url,data = None**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • data:可选,字典,元组列表,字节或文本文件等。
  • kwargs:可选参数。

返回类型:

  • requests.Response

post:发送一个POST请求。返回Response对象。

格式如下:

post(url,data = None,json = None**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • data:可选字典,元组列表,字节或文本文件等。
  • json:发送json格式。
  • kwargs:可选参数。

返回类型:

  • requests.Response

put:发送一个PUT请求。返回Response对象。

格式如下:

put(url,data = None**kwargs)

参数解析:

  • url:新Request对象的URL 。
  • data:可选字典,元组列表,字节或文本文件等。
  • kwargs:可选参数。

返回类型:

  • requests.Response

request:构造并发送requests.Reuqest。返回requests.Response对象。

格式如下:

request(method,url,name = None,catch_response = False**kwargs)

参数解析:

  • method :新Request对象的方法 。
  • url :新Request对象的URL 。
  • name :可选,可以指定为在Locust的统计信息中用作标签,而不是URL路径。
  • catch_response :可选布尔型参数,如果设置了该参数,则可用于发出请求,以返回上下文管理器以用作with语句的参数。
  • kwargs :可选参数。
  • params :可选,在查询字符串中发送的字典或字节请求数据。
  • data :可选,发送的字典或字节请求数据。
  • head :可选,发送的HTTP表头信息。
  • cookies :可选,发送的CookieJar或Dict信息。
  • files :可选,文件名,。
  • auth :可选,认证信息。
  • timeout :可选,超时时间,秒为单位。
  • allow_redirects :可选,默认情况下设置为True。
  • proxies :可选,字典到代理URL的映射协议。
  • stream :可选,是否立即下载响应内容。默认为False。
  • verify :可选,如果为True,将验证SSL证书。也可以提供CA_BUNDLE路径。
  • cert :可选,如果为String,则为ssl客户端证书文件(.pem)的路径。如果是元组,(“证书”,“密钥”)配对。

2、Response class

2.1 定义

该类位于python的request库中,用法发送HTTP请求的。

class Response

2.2 类及用法

apparent_encoding:由chardet库提供。

close():关闭,一旦调用此方法,raw就不会再次访问基础对象。

content:响应内容,以字节为单位。

cookies:服务器发送的回的Cookie的CookieJar。

格式如下:

cookies = None

elapsed:从发送请求到响应到达之间经过的时间(以时间增量为单位)。
此属性专门测量发送请求的第一个字节与完成头解析之间所花费的时间。
因此,它不会因使用响应内容或stream关键字参数的值而受到影响。。

格式如下:

elapsed = None

encoding:访问r.text时进行编码以进行解码。

格式如下:

encoding = None

headers:不区分大小写的响应标题字典,俗称响应头的值。

格式如下:

headers= None

history:Response请求历史记录中的对象列表。
任何重定向响应都将在此处结束。
该列表从最早的请求到最新的请求进行排序。

格式如下:

history = None

is_permanent_redirect:如果此响应是重定向的永久版本之一,则为True。

is_redirect:如果此响应是格式正确的HTTP重定向,并且可能已经被自动处理(由Session.resolve_redirects()),则为true 。

iter_content:遍历响应数据。
在请求上设置stream = True时,这避免了立即将内容读取到内存中以获得较大响应。大小是读入内存的字节数。

格式如下:

iter_content(chunk_size = 1,decode_unicode = False)

参数解析:

  • chunk_size :必须为int或 None类型
  • decode_unicode :默认为False,如果为True,将基于响应使用最佳可用编码对内容进行解码。

iter_lines:遍历响应数据,一次一行。
在请求上设置stream = True时,这避免了立即将内容读取到内存中以获得较大响应。

格式如下:

iter_lines(chunk_size=512, decode_unicode=False, delimiter=None)

json:返回响应的json编码内容(如果有内容)。

格式如下:

json(**kwargs)

参数解析:

  • kwargs :可选参数
  • ValueError :返回值错误。

raise_for_status():返回HTTPError。

raw:响应的类似文件的对象表现形式。不适用于内部请求。

格式如下:

raw = None

reason:HTTP状态响应的原因。

格式如下:

reason = None

request:响应的对象。

格式如下:

request = None

status_code:响应的HTTP状态的整数代码。

格式如下:

status_code = None

text:响应的内容,以unicode表示。
如果Response.encoding为None,则使用chardet。

URL:响应的最终URL地址。

格式如下:

url = None

3、ResponseContextManager class

3.1 定义

class ResponseContextManager(response,request_success,request_failure)

Response类还可以用作上下文管理器。
该类提供手动控制HTTP请求,在Locust统计信息为成功还是失败的能力。

状态有两个:success 和 failure

3.2 类及用法

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

with self.client.get("/", catch_response=True) as response:
    if response.content == "b":
        response.failure("No data")

success():成功。

with self.client.get("/does/not/exist", catch_response=True) as response:
    if response.status_code == 404:
        response.success()

4、Exceptions

4.1 exception InterruptTaskSet

exception InterruptTaskSet(reschedule=True)

定义解析:抛出任务时会中断用户的异常。

4.2 exception RescheduleTask

exception RescheduleTask

定义解析:在任务中,相当于return语句功能。当不在TaskSet内部,则会移交给父TaskSet。

4.3 exception RescheduleTaskImmediately

exception RescheduleTaskImmediately

定义解析:当在用户任务中引发时,会立即重新调用另一个用户任务,(无需先调用wait_time)。

5、Environment class

5.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)

5.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

6、Event hooks

6.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: 带有工作节点数据的 数据字典

6.2 class EventHook

class EventHook

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

#设置事件为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")

7、Runner classes

7.1 class Runner

7.1.1 定义

定义解析:通过启动和停止用户来进行负载测试。
在Environment 实例上使用这三个create_local_runner、create_master_runner或者 create_worker_runner 其中的一种来创建所需要的运行器。

格式如下:

class Runner(environment)
7.1.2 类及用法

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

start(user_count, spawn_rate, wait=False):开始运行。

参数解析

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

stop():通过停止所有正在运行的用户来停止正在运行的负载测试。

7.2 class MasterRunner

7.2.1 定义

定义解析:
① 用于跨多个进程/机器进行分布式负载测试;
②MasterRunner本身不会产生任何用户行为,相反,它希望WorkerRunner连接到它,然后它将引导启动和停止用户行为,对Worker Runner返回的信息进行汇总。

格式如下:

class MasterRunner(environment, master_bind_host, master_bind_port)

7.3 class LocalRunner

7.3.1 定义

定义解析:运行单个进程负载测试的运行程序。

格式如下:

class LocalRunner(environment)

7.4 class WorkerRunner

7.4.1 定义

定义解析:
①用于跨多个进程/机器进行分布式负载测试;
②WorkerRunner连接到MasterRunner,它将从中接收启动和停止用户行为的说明;
③WorkerRunner将定期获取正在运行的用户生成的统计信息,并将其发送回MasterRunner。

格式如下:

class WorkerRunner(environment, master_host, master_port)

8、Web UI class

8.1 定义

定义解析:运行一个 Flask 网站,可以使用environment.runner,并且可以在environment.stats中显示负载测试统计信息。

格式如下:

class WebUI(environment, host, port, auth_credentials=None, tls_cert=None, tls_key=None, stats_csv_writer=None, delayed_start=False)

8.2 类及用法

app= None:对flask.Flask 应用程序的引用。可用于以其他各种方式添加其他网络路线和自定义Flask应用。
例如:

from flask import request

#设置路由
@web_ui.app.route("/my_custom_route")

def my_custom_route():
    return "your IP is: %s" % request.remote_addr

flask模块可参考:《使用python和moco框架搭建接口mock服务

auth_required_if_enabled(view_func):在自定义路由器方法上使用装饰器,如果使用web-auth标识,则将会进行身份认证。
例如:

#设置路由
@web_ui.app.route("/my_custom_route")
#开启auth认证
@web_ui.auth_required_if_enabled

def my_custom_route():
    return "custom response"

greenlet= None:正在运行的web服务器

server= None:引用pyqsgi.WSGIServer 实例

stop():停止运行 web服务器

template_args: dict= None:用于呈现Web UI的index.html的参数。必须与扩展的index.html的自定义模块一起使用。

①、《Locust性能自动化—初识性能测试》

带你认识性能测试,了解性能测试需要关注哪些指标。

②、《Locust性能自动化-Locust介绍》

带你认识 locust,从此不再仅限于 Loadrunner、Jmeter性能功能。

③、《Locust性能自动化—代码实战》

让你了解locust的内涵,自己也可以动手写性能测试脚本。

④、《Locust性能自动化—如何提高Locust性能》

让你提高性能,遨游性能的海洋。

《Locust性能自动化—自定义客户端测试》

了解自定义客户端,可以轻松扩展对任何基于请求/响应的系统进行负载测试。

Locust性能自动化—API汇总整理(上)

原文链接:https://www.cxybb.com/article/wuyoudeyuer/109056073

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Locust是一个开源的负载测试工具,它可以模拟大量用户并发访问网站,以此来测试网站的性能和稳定性。如果你想进行Locust自动化调试,可以按照以下步骤进行操作: 1. 编写Locust脚本:首先,你需要编写一个Locust脚本,这个脚本将指定Locust如何模拟用户行为。你可以使用Python编写这个脚本,并在其中定义Locust任务、用户行为、虚拟用户数量等。 2. 运行Locust测试:在编写好Locust脚本后,你可以使用命令行工具来运行Locust测试。在终端中进入到Locust脚本所在的目录,并输入以下命令: ``` locust -f your_script.py ``` 这将启动Locust并运行你编写的脚本。 3. 使用自动化工具进行调试:你可以使用自动化工具来模拟用户行为,并对Locust进行自动化调试。例如,你可以使用Selenium WebDriver来模拟用户在浏览器中的操作,并将这些操作作为Locust任务的一部分。你还可以使用Python的unittest模块或pytest框架来编写自动化测试用例,并在其中调用Locust任务。 4. 分析测试结果:在测试完成后,Locust会自动生成测试报告,并显示测试结果、响应时间、错误率等指标。你可以使用Python的数据分析库(如pandas)来对这些指标进行进一步分析,以便优化网站的性能和稳定性。 总之,Locust是一个非常强大的负载测试工具,可以帮助你发现网站的性能瓶颈和问题。通过自动化调试,可以更加高效地进行测试和分析,并帮助你优化网站的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值