Python接口测试- 响应结果 Response

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

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

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

  • 请求相关内容(request):请求头、请求报文(消息体)
  • 响应相关内容(response):响应头、响应状态码、响应报文、cookies

拿之前的 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

响应部分

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

  • 接口测试分析服务端的响应数据是否符合预期
  • 网络爬虫获取到待爬取的页面 HTML,然后可以提取需要的内容
  • 应用开发需要从结果从读取响应的数据处理、展示

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

  • r.json():如果报文结构为 json 格式,则解析为字典格式,也就是说此方法获取的结果是字典。注意,如果报文主体不是 json 格式,则会抛出异常。
  • r.text:text 属性,可以以此方式返回除二进制外的任意数据格式,比如 HTML,XML,Json 均可。网络爬虫中一般使用此方式获取 HTML 页面。
  • r.content:content 属性用于获取二进制的数据格式,比如视频、图片等,常用于网络爬虫中爬取图片、视频等资源。
# 三种查看响应报文的方法
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)
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值