Python 接口测试之 requests 库核心用法

Python 接口测试之 requests 库核心用法

文章目录

一、安装

通过pip工具在命令行进行安装,建议使用指定版本避免使用差异,安装命令:

pip install requests 

安装后可通过pip list命令检查当前项目下requests包的版本是否安装成功。

二、介绍

requests库是一个非常流行的HTTP客户端库,主要用于发送HTTP请求,其中requests.get方法专门用于发送HTTP get请求到指定的URL。

requests.get方法会返回一个Response对象,该对象包含了服务器返回的所有信息,其提供的常用属性/方法及描述如下:

属性/方法描述
r.status_code响应状态码
r.content字节方式的响应体,会自动解码gzip和deflate压缩
r.headers以字典对象存储服务器响应头,若键不存在则返回None
r.json()Requests中内置的JSON解析方法,将响应体解析为JSON格式
r.url获取实际请求的URL
r.encoding编码格式,根据响应头部的字符编码确定
r.cookies获取服务器设置的cookies
r.raw返回原始响应体,不进行任何处理
r.text字符串方式的响应体,会自动根据响应头部的字符编码进行解码
r.raise_for_status()失败请求(非200响应)抛出异常

三、常见请求方法

requests库支持多种HTTP请求方法,核心常用方法为get、post,也可通过通用的request方法指定请求类型,核心方法定义及使用示例如下:

方法定义

# 发起get请求defget(url, params=None,**kwargs)# 发起post请求defpost(url, data=None, json=None,**kwargs)# 支持不同请求方式,method指定请求方法(get/OPTIONS/HEAD/post/PUT/PATCH/DELETE)defrequest(method, url,**kwargs)

使用示例

import requests # 直接调用get/post get_r = requests.get("https://www.baidu.com") post_r = requests.post("https://www.baidu.com")# 通过request方法指定请求类型 req_r1 = requests.request(method="get", url="https://www.baidu.com") req_r2 = requests.request(method="post", url="https://www.baidu.com")# 打印响应状态码print("get:", get_r.status_code)print("post:", post_r.status_code)print("method_get:", req_r1.status_code)print("method_post:", req_r2.status_code)

四、添加请求信息

get()、post()底层均调用request()方法,因此三个方法发送请求时传参无太大区别,可传递的核心参数及描述如下:

参数名描述
url请求的接口
headers一个字典,包含要发送的HTTP头
cookies一个字典、列表或者RequestsCookieJar 对象,包含要发送的cookies
files一个字典,包含要上传的文件
data一个字典、列表或者字节串,包含要发送的请求体数据
json一个字典,将被转换为JSON格式并发送
params一个字典、列表或者字节串,将作为查询字符串附加到URL上
auth一个元组,包含用户名和密码,用于HTTP认证
timeout一个浮点数或元组,指定请求的超时时间
proxies一个字典,包含代理服务器的信息
verify一个布尔值或字符串,指定是否验证SSL证书

实际使用示例

示例1:博客详情接口(带params、headers)
url ="http://84.153.19.140:9090/blog/getBlogDetail"# 定义查询参数 params ={"blogId":9773}# 定义请求头信息 header ={"user_token_header":"eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlck5hbWUiOiJ6aGFuZ3NhbiIsImV4cCI6MTczNTU1ODk2Mn0.72oh-gQ-5E6_aIcLsjotWL4ZHmgy0jF1794JDE-uUkg","x-requested-with":"XMLHttpRequest"} r = requests.post(url=url, params=params, headers=header)print(r.json())
示例2:博客登录接口(带data)
url ="http://84.153.19.140:9090/user/login"# 定义要发送的表单数据 data ={"username":"zhangsan","password":"123456"} r = requests.post(url=url, data=data)print(r.json())
示例3:博客园接口(带cookies、headers)
deftest_01(): url ="https://account.cnblogs.com/user/userinfo"# 定义请求头信息 header ={"Accept":"application/json, text/javascript, */*; q=0.01"}# 定义cookie信息 cookie ={".Cnblogs.AspNetCore.Cookies":"CfDJ8DfB03_iObVLoqH7ndAeeDgVJetjhlYbwnntg9Uy7_bcLryJ_RIEtfbgLsOt7uinPvbNd-pBCrZ_PSO5PvJVIw1lWKGW_BmqUG4pK2jDjEGKO8vaJdJ74bQWmCZW5U5wMaUO6QMrJFftQN8k31pgTbuD4X4lX-9kWMqGkzXkGkNb8C8hU_MyCqe9ZqjSDDSoPp4lFXTZ_MgBMGJLMzyw61Otnrrp2BXpw9oGbK14Q5ibK4_cAAL0cOPN1hYq1tDjbUs_CoDAyJanjddoezpNU6KQTchSOAmfFCbcuTLrDBlrHYHgnP75YE8pb4-AsJuaNrN74fBlYhJ_BQHKmvs_GJmj1L1seks5C32Lx7it67uq9be_7oDyj6ZLvTnZdryWXlucNb7EPE27P1-djOPq8MY15hSNVjO86Gcn8kDBbfyCee8Yi3exGOr026dRtPLSVjPdSbKV0st6X-d8so1oVJlKH2amdiX1Pofe7h_Yf6S-eVG_pnL6_frtvpCNbpVgApxB5Wm1yyy0UXLy31U-mVSuo5RJN6BQr4DXQ7umCz-yfpFjnZSUiuskBcwG83N3ww"} r = requests.post(url=url, headers=header, cookies=cookie)print(r.json())
  • 关键参数选择:params、json、data区别
  1. params:用于在URL中传递查询参数(Query Parameters),通常用于GET请求,也可用于其他类型请求;
  2. json:用于在请求体(Body)中传递JSON格式的数据,通常用于POST/PUT请求,使用时Content-Type会自动设置为application/json
  3. data:用于在请求体(Body)中传递表单数据,通常用于POST/PUT请求。

五、模块核心作用

requests库专注于HTTP请求的发送,能够便捷地构造各类HTTP请求、传递请求参数、获取服务端响应数据,是Python实现接口测试的核心基础库。

在接口自动化测试中,requests库负责底层的请求发送工作,而测试用例的组织、执行、管理则需要结合pytest等测试框架来实现。

Read more

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 从0到1打造RISC-V智能家居中控:硬件+固件+通信全链路实战 🏠💡 * 为什么选择RISC-V?🤔 * 系统整体架构概览 🧩 * 第一步:硬件选型与电路搭建 🔌 * 主控芯片选择 * 外设连接 * 第二步:开发环境搭建 🛠️ * 安装步骤(以Ubuntu为例) * 第三步:裸机驱动开发(Bare Metal)⚡ * 示例1:DHT11温湿度读取(Bit-banging) * 示例2:BH1750光照传感器(I2C) * 第四步:引入FreeRTOS实现多任务调度 🔄 * 第五步:Wi-Fi连接与MQTT通信 ☁️📡 * 连接Wi-Fi * MQTT客户端(使用esp-mqtt库) * 第六步:BLE本地控制(无需Wi-Fi)📱

By Ne0inhk
机器人远程监控与OTA升级

机器人远程监控与OTA升级

7.4.1 远程监控的理论框架 远程监控是物联网和工业4.0时代的核心技术,其理论任务是通过网络通信手段,实现对分布式机器人设备的实时状态感知、故障预警和远程干预 。对于机器人系统而言,远程监控不仅是数据可视化的问题,更是一个涉及数据采集、传输、处理、分析和决策的闭环系统工程。 远程监控系统的三层理论架构: 感知层解决“数据从哪里来”的问题。包括机器人本体上的各类传感器(温度、振动、电流、位置)、控制器状态(CPU负载、内存使用、存储寿命)以及运行日志的采集 。感知层的理论基础是传感器技术和信号处理,其核心挑战是在不影响机器人实时控制的前提下,高效、可靠地获取状态数据。 传输层解决“数据怎么传”的问题。根据应用场景的不同,可采用Wi-Fi(室内短距)、4G/5G(广域移动)、工业以太网(固定工位)等不同通信方式 。传输层的理论基础是网络通信协议栈,其核心挑战是保证数据在复杂工业环境下的实时性、可靠性和安全性。 应用层解决“数据怎么用”

By Ne0inhk

neo4j desktop2 安装与使用

1. Neo4j Desktop 2 简介 1.1 Neo4j Desktop 2 的核心功能与优势 Neo4j Desktop 2 是 Neo4j 官方推出的图形化数据库管理工具,专为开发者和数据科学家设计。 其主要优势包括: 一体化开发环境:集成了数据库实例管理、查询编辑、数据可视化和扩展管理 本地开发友好:支持在本地机器上快速创建和测试图数据库实例 多版本管理:可同时管理多个 Neo4j 数据库版本 插件生态系统:内置插件市场,轻松安装常用扩展  项目管理:以项目为单位组织数据库、查询和配置   1.2 适用场景 图数据库开发:为应用程序开发提供本地图数据库环境 本地测试:在部署到生产环境前进行数据模型测试和查询验证 项目管理:管理多个图数据库项目,保持环境隔离 教育与学习:学习 Cypher 查询语言和图数据库概念 2.

By Ne0inhk
手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

手把手教你配置飞书 OpenClaw 机器人,打造企业级 AI 智能助手

目标:在飞书(Feishu/Lark)中添加 OpenClaw 机器人,实现 7×24 小时 AI 智能对话与自动化办公。 OpenClaw GitHub | feishu-openclaw 桥接项目 想让你的机器人具备语音交互能力?试试 Seeed Studio 的 ReSpeaker 系列吧! 我会后续出reSpeaker XVF3800与Openclaw联动实现语音输入的教程,完全开放源码。 reSpeaker XVF3800 是一款基于 XMOS XVF3800 芯片的专业级 4 麦克风圆形阵列麦克风,即使在嘈杂的环境中也能清晰地拾取目标语音。它具备双模式、360° 远场语音拾取(最远 5 米)、自动回声消除 (AEC)、自动增益控制 (AGC)、声源定位 (DoA)、去混响、波束成形和噪声抑制等功能。

By Ne0inhk