当前位置: 首页 > article >正文

自动化测试框架搭建-封装requests-优化

目的

1、实际的使用场景,无法避免的需要区分GET、POST、PUT、PATCH、DELETE等不同的方式请求,以及不同请求的传参方式
2、python中requests中,session.request方法,GET请求,只支持params传递参数

session.request(method, url, params=params, headers=headers, **kwargs)

3、POST、PUT、PATCH等其他方式,即支持data传递请求体数据,也支持json 传递请求体数据,但是两者不可同时使用,否则会抛出异常。
4、DELETE方法,支持支持params传递参数,也支持data或者json,业界通常使用的是params穿参、或者url自带参数

设计思路

1、将GET请求和DELETE,统一使用params传递参数,在封装requests中进行区分
2、将POST、PUT、PATCH等方法,统一采用data传递参数,如果遇见需要json传递的场景可以在header中添加Content-Type: application/json进行2个场景兼容

代码实现

import requests


class Interfaces:
    def __init__(self):
        """session管理器"""
        self.session = requests.session()

    def request(self, method, url, params=None, data=None, headers=None, **kwargs):
        # 根据请求方法自适应传递参数
        if method.upper() in ['GET', 'DELETE']:
            # GET 请求使用 params 传递查询参数
            response = self.session.request(method, url, params=params, headers=headers, **kwargs)
        elif method.upper() in ['POST', 'PUT', 'PATCH']:
            # POST、PUT、PATCH、DELETE 请求使用 data 或 json 传递请求体数据
            response = self.session.request(method, url, data=data, headers=headers, **kwargs)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")

        return response


    def close_session(self):
        """关闭session"""
        self.session.close()



interfaces = Interfaces()


http://www.kler.cn/a/529052.html

相关文章:

  • 八、Spring Boot 日志详解
  • ReentrantReadWriteLock源码分析
  • 苍穹外卖 项目记录 day10 商户端(PC端)订单管理
  • 代码随想录算法训练营第三十九天-动态规划-213. 打家劫舍 II
  • 对顾客行为的数据分析:融入2+1链动模式、AI智能名片与S2B2C商城小程序的新视角
  • 注册谷歌账号
  • 42【语言的编码架构】
  • 记5(一元逻辑回归+线性分类器+多元逻辑回归
  • 计算机视觉和图像处理
  • FPGA|安装USB Blaster驱动
  • 5 个开源且免费的提示词管理系统,按照 从优到劣 排序
  • OFDM系统仿真
  • 告别复杂,拥抱简洁:用plusDays(7)代替plus(7, ChronoUnit.DAYS)
  • 页表(Page Table)
  • 面向npm的实时仪表板Dashly
  • 红黑树介绍
  • 搜索旋转排序数组(二分查找)
  • cf集合***
  • NTU:多模态大模型的知识获取能力评估
  • Python 梯度下降法(七):Summary
  • 第一个Python程序
  • 深入了解 SSRF 漏洞:原理、条件、危害
  • 2021 年 12 月大学英语四级考试真题(第 1 套)——纯享题目版
  • 使用frp访问内网web、ssh和隧道搭建
  • 本地部署 DeepSeek-R1:简单易上手,AI 随时可用!
  • 85.[1] 攻防世界 WEB easyphp