1. requests 请求封装
专门封装了 Python requests 库,统一管理 GET/POST 请求,简化接口调用,适合接口自动化测试入门学习。
整体核心作用
- 统一封装 :把重复的
requests.get/post代码封装成类,不用每次写重复代码 - 统一入口 :通过
run_main一个方法,自动根据请求方法调用对应函数 - 适配场景 :兼容有无请求头 、HTTPS 证书忽略等常见接口场景
- 返回统一 :所有请求直接返回
json格式结果,方便后续断言
1.1. 类与初始化方法
class SendRequests(object):
"""封装接口的请求:统一封装GET/POST,方便接口自动化调用"""
def __init__(self):
pass
- 定义一个请求工具类
SendRequests __init__初始化方法:暂时无初始化参数,留作后续扩展(如会话保持、超时设置)
1.2. GET 请求封装(重点)
1. 方法定义
def get(self, url, data, head):
if head is None:
response = requests.get(url=url, params=data)
else:
response = requests.get(url=url, params=data, headers=head)
return response.json()
2. GET 核心知识点
- 传参固定 :GET 请求传参必须用
params=,不能用data= - 参数拼接 :
params会自动把字典拼接到 URL 后面(?key=value) - 请求头兼容 :判断
head是否为None,兼容无请求头的接口 - 返回值 :直接返回
response.json(),拿到字典格式数据 - 关键字传参 :
url=url写法清晰,避免参数传错
3. 参数说明
url:接口地址data:请求参数(字典格式)head:请求头(可为 None)
1.3. POST 请求封装(重点)
1. 方法定义
def post(self, url, data, head):
if head is None:
response = requests.post(url, data, verify=False)
else:
response = requests.post(url, data, headers=head)
return response.json()
2. POST 核心知识点
- 传参方式 :使用位置传参 (
url, data, headers),不写关键字 - 自动识别 :位置传参会自动识别是表单提交 还是 JSON 提交
- HTTPS 处理 :
verify=False忽略 HTTPS 证书校验(解决接口请求报错) - 请求头兼容:同样兼容无请求头的场景
- 返回值 :统一返回
json格式
1.4. 统一请求入口:run_main(最实用)
1. 方法作用
根据传入的请求方法,自动分发到 GET/POST 方法,是整个封装的核心调度器。
2. 代码逻辑
def run_main(self, url, data, header, method):
res = None
if method.upper() == 'GET': # 转大写,兼容小写方法传入
res = self.get(url, data, header)
elif method.upper() == 'POST':
res = self.post(url, data, header)
else:
print("暂时只支持get和post请求")
return res
3. 核心优势
- 调用时不用区分 GET/POST ,只需要传
method参数 - 代码统一、易维护,后续加 PUT/DELETE 只需要扩展方法
- 容错性:
upper()兼容get/post/GET/POST多种写法
1.5. 使用示例
if __name__ == '__main__':
# 1. 定义接口信息
login_url = 'http://127.0.0.1:8787/dar/user/login'
login_data = {"user_name": "test01", "passwd": "admin123"}
login_headers = None
login_method = "POST"
# 2. 调用封装类
send = SendRequests() # 初始化对象
res = send.run_main(login_url, login_data, login_headers, login_method)
# 3. 输出结果
print(res)
调用步骤
- 定义接口四要素:
url/data/headers/method - 实例化封装类对象
- 通过
run_main统一发送请求 - 打印/处理返回结果