@TOCPython requests库接口自动化中是普遍使用的第三方库,本文主要介绍requests的常用方法、属性及在接口自动化测试中的二次封装调用。
一、requests安装
requests库是属于第三方库,需要安装后才可使用,安装步骤如下:
pip安装
pip install requests
二、接口请求的常用方法介绍
2.1 put、get、delete、put方法
与restful风格保持一致,requests库提供了get()、put()、delete()、post()四个方法,调用方式和参数内容如下:
import requests
res = requests.get(url, params=None, **kwargs) #发送get请求
res = requests.post(url, data=None, json=None, **kwargs) #发送post请求
res = requests.delete(url, **kwargs) #发送delete请求
res = requests.put(url, data=None, **kwargs) #发送put请求
参数说明:
- url----请口请求的url
- params----接口入参,get请求的参数,以字典方式传入
- json----接口入参,post请求的参数,参数类型为json格式
- data----接口入参,post请求和put请求的入参,在post请求中除json格式外,其它参数类型均使用data
2.2 request方法
以上四个方法作为requests接口请求的基本方法,均调用了requests的request方法,request方法及参数介绍如下:
import requests
res = requests.request(method, url, **kwargs)
参数说明
- method----接口请求方式,值分别对应以上四个方法名称,例如:请求方式为get,则method=‘get’
- url----接口请求的url地址
2.3 session.request()
requests的session.py模块的Sessio()类的对象用于创建会话,实现跨请求保持对话,可以使用以下两种方式创建session会话对象创建:
session = requests.session() #通过调用session模块的session()方法创建,session方法调用了Session类
session = requests.Session() #直接通过类名创建session会话对象
通过查看源代码发现,requests.request()底层调用其实是session对象的request()方法,故通过session的request()也可以实现接口的调用,方法和参数说明如下:
import requests
session = requests.session()
session.request(self, method, url,
params=None, data=None, headers=None, cookies=None, files=None,
auth=None, timeout=None, allow_redirects=True, proxies=None,
hooks=None, stream=None, verify=None, cert=None, json=None)
method----接口请求方式,值分别对应以上四个方法名称,例如:请求方式为get,则method=‘get’
url----接口的url地址
params----get请求的参数
data----post和put请求除json格式以外的参数
headers----接口请求头
cookies----请求头里面的cookie信息
files----用于文件上传,传参文件流
allow_redirects----是否允许重定向
json ----post请求的json格式传参
在Session类的注释中,举例说明了Session类及其请求get接口两种使用方法,如下:
2.4 一个接口请求的五种写法
综上,对于一个get请求,我们可以通过以下五种方式实现接口调用:
- 使用requests.get()
requests.get(url=url,params=params)
- 使用requests.request()
requests.request(method='get',url=url,params=params)
- 先通过session()方法创建session,再调用request()方法
session = requests.session()
session.request(method='get',url=url,params=params)
- 选通过Session()方法创建session,再调用request()方法
session = requests.Session()
session.request(method='get',url=url,params=params)
- 使用with
with requests.Session() as session:
session.request(method='get',url=url,params=params)
三、requests接口响应常用方法
res.text。 返回字符串
res.content返回字节数据
res.json()返回json数据,python 字典
res.status_code返回状态码
res.reason返回状态信息
res.cookies返回响应cookie
res.encoding返回响应编码
res.headers返回响应头
res.request.headers返回请求的一些数据
四、自动化接口测试request请求封装
import requests
class HttpClient:
def __init__(self):
self.session = requests.session()
def http_request(self, method, url, **kwargs):
"""
:param method: 接口请求方式,与Restful一致,入参可以为:get,put,delete,post等
:param url: 接口请求的url地址
:param kwargs: 请求其它参数,包括params, data, headers, cookies, files,
auth, timeout, allow_redirects, proxies,
hooks, stream, verify, cert, json等
:return:返回响应体
"""
response = self.session.request(method, url, **kwargs)
return response