接口自动化项目实战(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. 打印/处理返回结果
相关推荐
阿正的梦工坊15 小时前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
2301_8166602115 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员15 小时前
数据工程 pipelines 实践
python·github
懂懂tty15 小时前
CRA 迁移 Rspack(实战)
前端·架构
知行合一。。。15 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴15 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
青梅橘子皮15 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
qq_3721542316 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
浅时光_c16 小时前
3 shell脚本编程
linux·开发语言·bash
小码哥_常16 小时前
Kotlin 助力 Android 启动“大提速”
前端