【项目一】基于pytest的自动化测试框架———解读requests模块

解读python的requests模块

  • 什么是requests模块
  • 基础用法
  • GET与POST的区别
  • 数据传递格式
  • 会话管理与持久性连接
  • 处理相应结果
  • 应对HTTPS证书验证
  • 错误处理与异常捕获

这篇blog主要聚焦如何使用 Python 中的 requests 模块来实现接口自动化测试。下面我介绍一下 requests 的常用方法、数据传输方式以及应对实际项目中的常见问题。

什么是requests模块

requests 是 Python 中广泛使用的库,用于简化 HTTP 请求的发送和响应处理。
安装通过pip install requests

基础用法

  1. 发送post请求

在接口测试中,post请求经常用于发送数据。假设要测试一个登录接口,需要传递用户名和密码作为请求参数。

import requests# 设置请求的 URL 和参数
url = 'http://127.0.0.1:8787/login'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'username': 'testuser', 'password': 'testpass'}# 发起 POST 请求
response = requests.post(url, headers=headers, data=data)# 查看响应状态码和内容
print(response.status_code)  # 200 表示请求成功
print(response.text)  # 返回服务器响应的文本内容
  1. GET请求与参数传递

GET请求常用于获取服务器资源,如获取商品列表。我们可以传递查询参数,服务器根据参数返回特定的数据。

url = 'http://127.0.0.1:8787/products'
params = {'category': 'electronics'}response = requests.get(url, params=params)# 输出返回的 JSON 数据
print(response.json())

GET与POST的区别

在实际项目中,选择post还是get取决于数据传递的需求:
get:用于从服务器获取数据,查询参数通过 url 传递,适用于获取资源。
post:用于提交数据到服务器,参数在请求体中,适用于数据提交或修改。

数据传递格式

  1. 表单提交与JSON数据

post请求的数据传输方式主要有两种:表单数据和json数据。

  • 表单提交
data = {'username': 'testuser', 'password': 'testpass'}
response = requests.post(url, data=data)
  • JSON提交:
json_data = {'username': 'testuser', 'password': 'testpass'}
response = requests.post(url, json=json_data)

不同的接口通常有特定的数据格式要求,测试时需依据接口文档确定数据传输方式。

会话管理与持久性连接

在一些需要多次请求的场景下,使用会话对象 Session 可以管理持久性连接,避免重复登录等繁琐操作。尤其是涉及用户登录、会话保持的场景,Session 的使用至关重要。

# 创建会话对象
session = requests.Session()# 使用会话对象进行登录
login_url = 'http://127.0.0.1:8787/login'
session.post(login_url, data={'username': 'testuser', 'password': 'testpass'})# 登录后,访问受保护的资源
protected_url = 'http://127.0.0.1:8787/protected'
response = session.get(protected_url)print(response.text)

处理相应结果

除了接口的响应状态码,还需要处理接口返回的数据格式,requests支持多种返回格式:
文本类型:print(response.text)
解析JSON相应:print(response.json())
获取二进制内容,如图片或文件:print(response.content)

应对HTTPS证书验证

在测试HTTPS接口时,可能会遇到证书验证错误,可以通过一下方式禁用证书验证:

response = requests.get(url, verify=False)

错误处理与异常捕获

requests提供了强大的异常处理机制,在测试过程中可以捕获网络错误或者超时的问题

try:response = requests.get(url, timeout=5)response.raise_for_status()  # 检查请求是否成功
except requests.exceptions.HTTPError as http_err:print(f'HTTP error occurred: {http_err}')
except requests.exceptions.RequestException as err:print(f'Other error occurred: {err}')

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

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

相关文章

【JAVA入门】Day45 - 压缩流 / 解压缩流

【JAVA入门】Day45 - 压缩流 / 解压缩流 文章目录 【JAVA入门】Day45 - 压缩流 / 解压缩流一、解压缩流二、压缩流 在文件传输过程中,文件体积比较大,传输较慢,因此我们发明了一种方法,把文件里的数据压缩到一种压缩文件中&#x…

[苍穹外卖]-10WebSocket入门与实战

WebSocket WebSocket是基于TCP的一种新的网络协议, 实现了浏览器与服务器的全双工通信, 即一次握手,建立持久连接,双向数据传输 区别 HTTP是短连接, WebSocket是长连接HTTP单向通信, 基于请求响应模型WebSocket支持双向通信 相同 HTTP和WebSocket底层都是TCP连接 应用场景…

JVM 调优篇7 调优案例1-堆空间的优化解决

一 jvm优化 1.1 优化实施步骤 1)减少使用全局变量和大对象; 2)调整新生代的大小到最合适; 3)设置老年代的大小为最合适; 4)选择合适的GC收集器; 1.2 关于GC优化原则 多数的Java应用不需要在服务器上进行GC优化&#xff1b…

Java中的Lambda表达式和Stream API详解

在现代Java开发中,Lambda表达式和Stream API是简化代码、提高可读性和开发效率的关键工具。Java 8引入的这两大功能不仅增强了语言的表达力,还大幅提升了处理集合和数据流的能力。本文将详细解析Lambda表达式和Stream API的使用方法,并结合实…

FreeRTOS常用API接口函数

提示:FreeRTOS常用API接口函数:并对部分参数附上自己的解释,后面继续补充 FreeRTOS常用API接口函数 1.任务相关的API1.1 创建任务:xTaskCreate1.2 开启任务调度器函数:vTaskStartScheduler1.3 任务的删除:vTaskDelete1…

Android Service服务使用方法

启动服务的方法 我们要隐式启动一个Service&#xff0c;首先我们需要配置AndroidMainfest.xml <service android:name".MyAsdlService"><intent-filter><action android:name"com.example.myasdlservice" /></intent-filter><…

Rollup 插件机制深入学习

插件系统的核心 Rollup 的插件系统是其强大功能的一部分&#xff0c;能够让开发者通过插件定制打包过程。插件的核心包括&#xff1a; Graph&#xff1a;Rollup 的全局图形表示&#xff0c;用于管理入口点及其依赖关系。PluginDriver&#xff1a;插件驱动器&#xff0c;负责调…

【ArcGISProSDK】初识

ArcGIS Pro SDK 提供四种主要的可扩展性模式&#xff1a;加载项、托管配置、插件数据源和 CoreHost 应用程序。 各模块文件对比 API 核心 核心程序集位于 {ArcGIS Pro 安装文件夹}\bin 中。 程序集描述ArcGIS.Core.dll 提供 CIM、地理数据库、几何图形和公共设施网络 API。 …

Prometheus+grafana监控spring boot 3运行情况

使用Prometheus和Grafana来监控Spring Boot 3应用的运行情况是一种强大的监控策略&#xff0c;可以帮助你了解应用的性能、健康状况以及潜在的问题。以下是如何配置这种监控系统的基本步骤&#xff1a; 1. Spring Boot 应用配置 首先&#xff0c;确保你的Spring Boot 3应用已…

Notepad++插件:TextFX 去除重复行

目录 一、下载插件 TextFX Characters 二、去重实操 2.1 选中需要去重的文本 2.2 操作插件 2.3 结果展示 2.3.1 点击 Sort lines case sensitive (at column) 2.3.2 点击 Sort lines case insensitive (at column) 一、下载插件 TextFX Characters 点【插件】-【插件管理…

从头开始学MyBatis—02基于xml和注解分别实现的增删改查

首先介绍此次使用的数据库结构&#xff0c;然后引出注意事项。 通过基于xml和基于注解的方式分别实现了增删改查&#xff0c;还有获取参数值、返回值的不同类型对比&#xff0c;帮助大家一次性掌握两种代码编写能力。 目录 数据库 数据库表 实体类 对应的实体类如下&#x…

JS 扩展运算符有哪些使用场景?

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 扩展运算符有哪些使用场景&#xff1f;直接进入正题 一、复制数组 const a1 [1, 2];// 写法一 const a2 [...a1]; // 写法二 const [...a2] a1;二、合并数组 const part1 [1, 2, 3]; const part2 …

golang学习笔记16——golang部署与运维全攻略

推荐学习文档 golang应用级os框架&#xff0c;欢迎star基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学…

【C++基础概念理解——类的继承和嵌套】

基本概念 在 C 中&#xff0c;类的继承和嵌套类的定义是两种不同的概念。 class InitialSetupProcedure : public StateMachine //类的继承(符号是":")class InitialSetupProcedure::StateMachine //类的嵌套(符号是"::"&#xff0c;意思是类StateMach…

深度学习和计算机视觉:实现图像分类

深度学习在计算机视觉领域的应用已经取得了革命性的进展。从图像分类到对象检测&#xff0c;再到图像分割和生成&#xff0c;深度学习模型在这些任务中都展现出了卓越的性能。本篇文章将介绍如何使用深度学习进行图像分类&#xff0c;这是计算机视觉中的一个基础任务。 计算机…

什么是幂等

什么是幂等&#xff1f; 幂等简单来说就是“重复做同一件事&#xff0c;结果还是一样的”。比如&#xff0c;你按电视遥控器的开关按钮&#xff0c;按一次电视开了&#xff0c;再按一次电视关了。这个操作不是幂等的&#xff0c;因为你每按一次&#xff0c;结果都不一样。 再…

KTM580030bit 绝对角度细分器支持最多 4096 对极与一键非线性自校准集成双 16bit 2M SAR ADC

KTM5800 是一款 30bit 绝对角度细分 4096 对极编码细分器&#xff0c;可以与磁电阻传感器&#xff08; AM R/TMR &#xff09;搭配&#xff0c;构成一个高速高精度的非接触磁性编码器模块。它具有以非常高的采样速率 读取传感器上的差分模拟正弦和余弦信号的能力&#xf…

pytest 生成allure测试报告

allure的安装 github地址 allure资产列表 windows下载.zip&#xff0c;解压并配置环境变量PATH&#xff1b;linux下载安装allure&#xff0c;可以使用windows下解压的.zip文件&#xff08;通用&#xff09;&#xff0c;或者下载.rpm/.deb 文件进行安装并配置PATH&#xff1b;…

通信工程学习:什么是MRF多媒体资源功能、MRFC多媒体资源功能控制、MRFP多媒体资源功能处理

一、MRF多媒体资源功能 MRF&#xff08;Multimedia Resource Function&#xff0c;多媒体资源功能&#xff09;是3G/IMS网络中定义的提供多媒体资源功能的网络实体&#xff0c;它为3G/IMS网络的业务和承载提供媒体能力支持。MRF通过提供丰富的媒体处理功能&#xff0c;如播放声…

分块总结:时髦之裤

说白了就是南外分块题做的差不多了&#xff0c;来写一篇总结。 简要题意&#xff1a; 给一序列 a&#xff0c;初始时 a i i a_ii ai​i&#xff0c;有如下两个操作&#xff1a; 1.将[l,r]每个数改为x&#xff0c;该点增加贡献 ∣ a i − x ∣ |a_i-x| ∣ai​−x∣. 2.询问[l…