Python接口测试- 响应结果 Response

2019-11-18  本文已影响0人  猫与测试

我们通过 requests 构造请求发送的目的就是为了通过接口访问其返回数据,也就是响应结果。

requests 库中提供了很多响应结果 Response 相关的方法,前面已经提到过一些,这里详细罗列一下。

通过发送请求的相关函数(如requests.get())会获得 Response 对象。通过 Response 对象可以获取到以下的内容:

拿之前的 post 请求为例:

import requests

url = 'http://127.0.0.1/showdoc/server/index.php?s=/api/user/login'
data = {
    'username': 'showdoc',
    'password': '123456'
}
r = requests.post(url, data=data)  # => r 就是 Response 对象

通过请求得到的 Response 对象可以获取请求、响应和历史:

请求部分

请求部分,是当前已发送的请求部分的内容。类似 Fiddler 抓包数据的上半部分。包括请求头、请求报文等信息。

print(r.request.headers) # => 请求头部信息
## {'User-Agent': ..., 'Content-Type': 'application/x-www-form-urlencoded', ...}
print(r.request.method) # => 请求方法
## POST
print(r.request.url) # => 请求地址
## http://127.0.0.1/showdoc/server/index.php?s=/api/user/login
print(r.request.body)  # => 请求报文
## username=showdoc&password=123456

响应部分

响应部分就是请求发送后,服务端返回的内容。这部分不管是接口测试、网路爬虫、应用开发,都是主要关注的部分。

响应报文部分,可以通过以下三种方法获取:

# 三种查看响应报文的方法
print(r.json())
print(r.text)
print(r.content)

另外,还可以获取响应头部相关信息,比如响应头、服务器返回的cookies等。

print(r.cookies)  # => 服务端返回的 cookies
## <RequestsCookieJar[<Cookie cookie_token=... for 127.0.0.1/>]>
print(r.headers)
## {'Content-Type': 'text/html', ...}
print(r.encoding) # => 当前编码
## ISO-8859-1
print(r.status_code) # => 响应状态码
## 200
print(r.reason) # => 状态码描述
## OK

如果响应报文显示为乱码,可通过设置encoding属性解决:

r = requests.post(url, data=data)
r.encoding = 'utf-8'  # => 一般设置为 utf-8 即可
print(r.text)
上一篇下一篇

猜你喜欢

热点阅读