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

【项目一】基于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}')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【App】React Native
  • STM32的寄存器深度解析
  • 关系数据库,集合运算符,关系运算符
  • 1-4微信小程序基础
  • 苹果系统(MacOS)中的Finder如何方便展现根目录
  • 多线程篇(其它容器- CopyOnWriteArrayList)(持续更新迭代)
  • 嵌入式鸿蒙系统开发语言与开发方法分析
  • 什么是机器学习力场
  • 【H2O2|全栈】关于CSS(2)CSS基础(二)
  • 关于新版本 tidb dashboard API 调用说明
  • 推荐这款神器:Perplexity
  • mysql笔记9(子查询)
  • 使用LangChain集成ChatGPT插件:以Klarna购物API为例
  • 数据结构:堆排序
  • Java Jdbc 链接db2数据库示例
  • create-react-app做的留言板
  • Cumulo 的 ClojureScript 模块已经成型
  • ES10 特性的完整指南
  • Hexo+码云+git快速搭建免费的静态Blog
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • sublime配置文件
  • win10下安装mysql5.7
  • 后端_ThinkPHP5
  • 老板让我十分钟上手nx-admin
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 异常机制详解
  • 【云吞铺子】性能抖动剖析(二)
  • gunicorn工作原理
  • python最赚钱的4个方向,你最心动的是哪个?
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 积累各种好的链接
  • ​一些不规范的GTID使用场景
  • # 计算机视觉入门
  • #laravel 通过手动安装依赖PHPExcel#
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (06)Hive——正则表达式
  • (8)STL算法之替换
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (十六)串口UART
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)Mysql的优化设置
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET企业级应用架构设计系列之技术选型
  • .NET项目中存在多个web.config文件时的加载顺序
  • .net中应用SQL缓存(实例使用)
  • @EnableConfigurationProperties注解使用
  • @RequestMapping 的作用是什么?
  • [ solr入门 ] - 利用solrJ进行检索