@TOCPython requests库接口自动化中是普遍使用的第三方库,本文主要介绍requests的常用方法、属性及在接口自动化测试中的二次封装调用。
requests库是属于第三方库,需要安装后才可使用,安装步骤如下:
pip install requests
与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请求
参数说明:
以上四个方法作为requests接口请求的基本方法,均调用了requests的request方法,request方法及参数介绍如下:
import requests
res = requests.request(method, url, **kwargs)
参数说明
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接口两种使用方法,如下:
综上,对于一个get请求,我们可以通过以下五种方式实现接口调用:
requests.get(url=url,params=params)
requests.request(method='get',url=url,params=params)
session = requests.session()
session.request(method='get',url=url,params=params)
session = requests.Session()
session.request(method='get',url=url,params=params)
with requests.Session() as session:
session.request(method='get',url=url,params=params)
res.text。 返回字符串
res.content返回字节数据
res.json()返回json数据,python 字典
res.status_code返回状态码
res.reason返回状态信息
res.cookies返回响应cookie
res.encoding返回响应编码
res.headers返回响应头
res.request.headers返回请求的一些数据
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