自动化测试框架搭建-封装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 requestsclass 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 responsedef close_session(self):"""关闭session"""self.session.close()interfaces = Interfaces()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:如何搜索含有复合词的语言

作者:来自 Elastic Peter Straer 复合词在文本分析和标记过程中给搜索引擎带来挑战,因为它们会掩盖词语成分之间的有意义的联系。连字分解器标记过滤器等工具可以通过解构复合词来帮助解决这些问题。 德语以其长复合词而闻名:Rindfleischetik…

41【语言的编码架构】

不同语言采用的编码架构不一样 火山采用:UTF-16 易语言采用:GBK php采用:UTF-8 这个编码架构指的就是文本所代表的字节集,比如易语言中“你好”表示的就是{196,227,186,195} 窗口程序集名保 留 保 留备 注窗口程序集_启动窗口 …

web-SQL注入-CTFHub

前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…

WPS动画:使图形平移、围绕某个顶点旋转一定角度

1、平移 案例三角形如下图,需求:该三角形的A点平移至原点 (1)在预想动画结束的位置绘制出图形 (2)点击选中原始图像,插入/动画/绘制自定义路径/直线 (3)十字星绘制的直线…

xmind使用教程

xmind使用教程 前言xmind版本信息“xmind使用教程”的xmind思维导图 前言 首先xmind是什么?XMind 是一款思维导图和头脑风暴工具,用于帮助用户组织和可视化思维、创意和信息。它允许用户通过图形化的方式来创建、整理和分享思维导图,可以用于…

KNIME:开源 AI 数据科学

KNIME(Konstanz Information Miner)是一款开源且功能强大的数据科学平台,由德国康斯坦茨大学的软件工程师团队开发,自2004年推出以来,广泛应用于数据分析、数据挖掘、机器学习和可视化等领域。以下是对KNIME的深度介绍…

2025年01月27日Github流行趋势

项目名称:onlook项目地址url:https://github.com/onlook-dev/onlook项目语言:TypeScript历史star数:5340今日star数:211项目维护者:Kitenite, drfarrell, iNerdStack, abhiroopc84, apps/dependabot项目简介…

TCL C++开发面试题及参考答案

进程和线程的区别 进程和线程都是操作系统中重要的概念,它们在很多方面存在着明显的区别。 从概念上来说,进程是资源分配的基本单位,每个进程都有自己独立的地址空间、内存、文件描述符等资源。例如,当我们在计算机上同时运行多个应用程序,像浏览器、文本编辑器等,每个应…

深入探讨DICOM医学影像中的WADO服务及其具体实现

1. 引言 随着数字化医学影像技术的普及,如何高效、安全地存储、管理和共享医学影像数据成为医疗行业亟待解决的关键问题。DICOM(Digital Imaging and Communications in Medicine)作为国际公认的医学影像标准,在全球范围内广泛应…

本地部署DeepSeek-R1模型(新手保姆教程)

背景 最近deepseek太火了,无数的媒体都在报道,很多人争相着想本地部署试验一下。本文就简单教学一下,怎么本地部署。 首先大家要知道,使用deepseek有三种方式: 1.网页端或者是手机app直接使用 2.使用代码调用API …

VS Code 复制正确格式的文件路径/文件夹路径 (绝对路径,相对路径, 斜杠 /, 反斜杠\\ 等)

VS Code 搜索 : baincd.copy-path-unixstyle Github : https://github.com/baincd/vscode-copy-path-unixstyle 插件市场: https://marketplace.visualstudio.com/items?itemNamebaincd.copy-path-unixstyle 支持复制各种格式的路径 格式 GitBash /c/chris/project-name/sr…

每天学点小知识之设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解模板方法模式 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基…

CSS Module 常用笔记

Date: January 30, 2025 CSS 先介绍下普通 CSS,再简明介绍下 css module 的使用 普通 CSS 内联 style 定义: 内联 style 是通过在元素的 style 属性中直接设置 CSS 样式。这种方式允许我们直接在 JSX 中为组件或元素添加样式。 写法: &…

python 中的堆

文章目录 小根堆的特点Python 中的 heapq 模块1. heapq.heappush(heap, item)2. heapq.heappop(heap)3. heapq.heapify(x)4. heapq.heappushpop(heap, item)5. heapq.heapreplace(heap, item)6. heapq.nsmallest(n, iterable)7. heapq.nlargest(n, iterable) 小根堆的应用场景示…

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…

【RocketMQ】RocketMq之IndexFile深入研究

一:RocketMq 整体文件存储介绍 存储⽂件主要分为三个部分: CommitLog:存储消息的元数据。所有消息都会顺序存⼊到CommitLog⽂件当中。CommitLog由多个⽂件组成,每个⽂件固定⼤⼩1G。以第⼀条消 息的偏移量为⽂件名。 ConsumerQue…

注解与反射基础

注解 概述 注解(Annotation),从jdk5.0引入。 作用 不是程序本身,可以对程序作出解释(这一点和注释没什么区别)可以被其他程序读取 格式 注释是以“注释名”在代码中存在的,还可以添加一些…

WebSocket——环境搭建与多环境配置

一、前言:为什么要使用多环境配置? 在开发过程中,我们通常会遇到多个不同的环境,比如开发环境(Dev)、测试环境(Test)、生产环境(Prod)等。每个环境的配置和需…

SliverAppBar的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverGrid组件相关的内容,本章回中将介绍SliverAppBar组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverAppBar和普通的AppBar类似,它们的…

BFS(广度优先搜索)——搜索算法

BFS,也就是广度(宽度)优先搜索,二叉树的层序遍历就是一个BFS的过程。而前、中、后序遍历则是DFS(深度优先搜索)。从字面意思也很好理解,DFS就是一条路走到黑,BFS则是一层一层地展开。…