Python接口测试- 响应结果 Response

mac2025-07-06  2

我们通过 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)
最新回复(0)