性能测试工具 Locust 的 API 介绍-----HttpSession 类和 Response 类

Sorin · 2018年04月08日 · 1764 次阅读

HttpSession 类
class HttpSession(base_url, *args, **kwargs)

用于执行 Web 请求并保持 cookie 的类(以便能够登录和退出网站)。记录每个请求,以便 Locust 显示统计信息。

这是 python-request 的 requests.Session 类的一个扩展的版本,工作原理也差不多相同。然而,发送请求(get,post,delete,put,head,options,patch,request)的方法,现在使用的 URL 只是部分的 url 参数,URL 的 host 部分将由 Locust 类的 host 参数提供,当然也可以在 Locust 启动命令中添加。

每个提出请求的方法还需要两个额外的可选参数,这些参数是 Locust 特定的,并且不存在于 python 请求中。这些是:

参数:

name -(可选)可以指定在 Locust 统计信息中用作标签的参数,而不是 URL 路径。这可以用于将请求的不同 URL 分组到 Locust 统计信息中的单个条目中。
catch_response -(可选)布尔参数,如果设置,可以用于发出请求,返回上下文管理器作为 with 语句的参数。这将允许根据响应的内容将请求标记为失败,即使响应代码正常(2xx)。相反的工作,可以使用 catch_response 来捕获请求,然后将其标记为成功,即使响应代码不是(即 500 或 404)。

delete(url,** kwargs )
发送 DELETE 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

get(url,** kwargs )
发送 GET 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

head(url,** kwargs )
发送 HEAD 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

options(url,** kwargs )
发送 OPTIONS 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

patch(url,data = None,** kwargs )
发送 PATCH 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
data -(可选)发送请求的字典,字节或类文件对象。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

post(url,data = None,json = None,** kwargs )
发送 POST 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
data -(可选)发送请求的字典,字节或类文件对象。
json -(可选)请求的发送的 json。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

put(url,data = None,** kwargs )
发送 PUT 请求。返回 Response 对象。

参数:
url - 新请求的 URL 。
data -(可选)发送请求的字典,字节或类文件对象。
** kwargs - 请求的可选参数。
返回类型:
requests.Response

request(method,url,name = None,catch_response = False,** kwargs )
构造并发送 requests.Request。返回 requests.Response 对象。

参数:

method - 新请求的方法。
url - 新请求的 URL 。
name -(可选)可以指定在 Locust 统计信息中用作标签的参数,而不是 URL 路径。这可以用于将请求的不同 URL 分组到 Locust 统计信息中的单个条目中。
catch_response -(可选)布尔参数,如果设置,可以用于发出请求,返回上下文管理器作为 with 语句的参数。这将允许根据响应的内容将请求标记为失败,即使响应代码正常(2xx)。相反的工作,可以使用 catch_response 来捕获请求,然后将其标记为成功,即使响应代码不是(即 500 或 404)。
params -(可选)要在查询字符串中发送的字典或字节 Request。
data -(可选)发送请求的字典,字节或类文件对象。
headers -(可选)要发送的 HTTP 标题字典 Request。
cookies -(可选)要发送的 Dict 或 CookieJar 对象 Request。
files -(可选)多部分编码上传的字典。'filename': file-like-objects
auth -(可选)Auth 元组或可以启用基本/摘要/自定义 HTTP 验证。
timeout(float 或 tuple)-(可选)等待服务器在放弃之前发送数据,浮点数或(连接超时,读取超时)元组等待多长时间。
allow_redirects(bool)-(可选)默认设置为 True。
proxies -(可选)字典映射协议到代理的 URL。
stream -(可选)是否立即下载响应内容。默认为 False。
verify -(可选),如果 TrueSSL 证书将被验证。还可以提供 CA_BUNDLE 路径。
cert -(可选)如果 String,ssl 客户端证书文件(.pem)的路径。如果 Tuple,('cert','key')对。

Response 类

这个类实际上位于 python-requests 库中,因为这就是 Locust 用来生成 HTTP 请求的内容,但它包含在 locust 的 API 文档中,因为它在编写 locust 负载测试时非常重要。您还可以在请求文档中查看 Response 类 。

类 Response
该 Response 对象包含服务器对 HTTP 请求的响应。

apparent_encoding
响应的编码,由 chardet 库提供。

close()
将连接释放。一旦调用此方法,raw 不能再次访问底层对象。

注意:通常不需要明确地调用。

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

cookies =无
服务器返回的 Cookie。

elapsed =无
发送请求和响应到达之间的时间量(作为 timedelta)。此属性专门测量发送请求的第一个字节和完成解析头文件之间的时间。因此,不需要消耗响应内容或 stream 关键字参数的值。

encoding =无
编码在访问 r.text 时进行解码。

headers =无
不区分大小写的响应头字典。例如,headers['content-encoding'] 将返回'Content-Encoding'响应头的值。

history =无
Response 来自请求历史记录的对象列表。任何重定向响应将在此处结束。列表从最旧的请求排序到最近的请求。

is_permanent_redirect
如果此响应是永久版本的重定向,则为 true。

is_redirect
如果此响应是可以很好自动处理(通过 Session.resolve_redirects())格式的 HTTP 重定向,则为 true 。

iter_content(chunk_size = 1,decode_unicode = False )
迭代响应数据。当请求中设置了 stream = True 时,这避免了一次将内容读入内存以进行大的响应。块大小是它应该读入内存的字节数。这不一定是在解码可以发生时返回的每个项目的长度。

chunk_size 必须是 int 类型或 None 类型。stream = True 将在数据到达时以任何大小块的形式读取数据。如果 stream = False,则数据作为单个块返回。

如果 decode_unicode 为 True,则将使用基于响应的最佳可用编码对内容进行解码。

iter_lines(chunk_size = 512,decode_unicode = None,delimiter = None )
响应数据迭代,一次一行。当请求中设置了 stream = True 时,这避免了一次将内容读入内存以进行大的响应。

注意

这种方法不是可重入的。

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

Parameters: ** kwargs - 可选参数 json.loads。
Raises: ValueError - 如果响应正文不包含有效的 json。
links
返回响应的解析头链接(如果有)。

next
返回一个 PreparedRequest,用于重定向链中的下一个请求(如果有的话)。

ok
如果 status_code 小于 400,则返回 True 。

此属性检查响应的状态代码是否在 400 到 600 之间,以查看是否有客户端错误或服务器错误。如果状态代码在 200 到 400 之间,则返回 True。这不是一个检查,看看是否有响应代码。200 OK

raise_for_status()
升高存储 HTTPError,如果发生。

raw =无
表示文件类对象的响应(用于高级用法)。使用 raw 需要 stream=True 根据请求设置。

reason =无
响应 HTTP 状态的文本原因,例如 “未找到” 或 “确定”。

request =无
PreparedRequest 这是一个响应的对象。

status_code =无
响应 HTTP 状态的整数代码,例如 404 或 200。

text
内容的回应,在 unicode。

如果 Response.encoding 为 None,则会使用编码进行猜测 chardet。

响应内容的编码仅基于 HTTP 标头确定,遵循 RFC 2616 的字母。如果您可以利用非 HTTP 知识来更好地猜测编码,则 r.encoding 在访问此属性之前,应该适当地进行设置。

url =无
响应的最终 URL 位置。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册