接口自动化项目实战(1):requests请求封装

1. requests 请求封装

专门封装了 Python requests 库,统一管理 GET/POST 请求,简化接口调用,适合接口自动化测试入门学习。


整体核心作用

  1. 统一封装 :把重复的 requests.get/post 代码封装成类,不用每次写重复代码
  2. 统一入口 :通过 run_main 一个方法,自动根据请求方法调用对应函数
  3. 适配场景 :兼容有无请求头HTTPS 证书忽略等常见接口场景
  4. 返回统一 :所有请求直接返回 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 核心知识点

  1. 传参固定 :GET 请求传参必须用 params=,不能用 data=
  2. 参数拼接params 会自动把字典拼接到 URL 后面(?key=value
  3. 请求头兼容 :判断 head 是否为 None,兼容无请求头的接口
  4. 返回值 :直接返回 response.json(),拿到字典格式数据
  5. 关键字传参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 核心知识点

  1. 传参方式 :使用位置传参url, data, headers),不写关键字
  2. 自动识别 :位置传参会自动识别是表单提交 还是 JSON 提交
  3. HTTPS 处理verify=False 忽略 HTTPS 证书校验(解决接口请求报错)
  4. 请求头兼容:同样兼容无请求头的场景
  5. 返回值 :统一返回 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)

调用步骤

  1. 定义接口四要素:url / data / headers / method
  2. 实例化封装类对象
  3. 通过 run_main 统一发送请求
  4. 打印/处理返回结果
相关推荐
Le_ee2 分钟前
ctfweb:php/php短标签/.haccess+图片马/XXE
开发语言·前端·php
爱上好庆祝11 分钟前
学习js的第七天(wed APIs的开始)
前端·javascript·css·学习·html·css3
苍煜41 分钟前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
yong99901 小时前
MATLAB读取高光谱图像
开发语言·matlab
2zcode1 小时前
基于MATLAB的肝病风险评估与分期分析系统设计与实现
开发语言·matlab
KaMeidebaby1 小时前
卡梅德生物技术快报|冻干工艺开发:注射用心肌肽全流程参数优化与工程化方案
前端·其他·百度·新浪微博
小小de风呀1 小时前
de风——【从零开始学C++】(五):内存管理
开发语言·c++
ooseabiscuit1 小时前
Laravel6.x核心优化与特性全解析
android·开发语言·javascript
折哥的程序人生 · 物流技术专研1 小时前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
AllData公司负责人1 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql