公司做网站推广,郑州企业建设网站技术,网站的建设的含义,办网站需要多少费用解读python的requests模块 什么是requests模块基础用法GET与POST的区别数据传递格式会话管理与持久性连接处理相应结果应对HTTPS证书验证错误处理与异常捕获 这篇blog主要聚焦如何使用 Python 中的 requests 模块来实现接口自动化测试。下面我介绍一下 requests 的常用方法、数… 解读python的requests模块 什么是requests模块基础用法GET与POST的区别数据传递格式会话管理与持久性连接处理相应结果应对HTTPS证书验证错误处理与异常捕获 这篇blog主要聚焦如何使用 Python 中的 requests 模块来实现接口自动化测试。下面我介绍一下 requests 的常用方法、数据传输方式以及应对实际项目中的常见问题。 什么是requests模块
requests 是 Python 中广泛使用的库用于简化 HTTP 请求的发送和响应处理。 安装通过pip install requests
基础用法
发送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, headersheaders, datadata)# 查看响应状态码和内容
print(response.status_code) # 200 表示请求成功
print(response.text) # 返回服务器响应的文本内容GET请求与参数传递
GET请求常用于获取服务器资源如获取商品列表。我们可以传递查询参数服务器根据参数返回特定的数据。
url http://127.0.0.1:8787/products
params {category: electronics}response requests.get(url, paramsparams)# 输出返回的 JSON 数据
print(response.json())GET与POST的区别
在实际项目中选择post还是get取决于数据传递的需求 get用于从服务器获取数据查询参数通过 url 传递适用于获取资源。 post用于提交数据到服务器参数在请求体中适用于数据提交或修改。
数据传递格式
表单提交与JSON数据
post请求的数据传输方式主要有两种表单数据和json数据。
表单提交
data {username: testuser, password: testpass}
response requests.post(url, datadata)JSON提交
json_data {username: testuser, password: testpass}
response requests.post(url, jsonjson_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, verifyFalse)错误处理与异常捕获
requests提供了强大的异常处理机制在测试过程中可以捕获网络错误或者超时的问题
try:response requests.get(url, timeout5)response.raise_for_status() # 检查请求是否成功
except requests.exceptions.HTTPError as http_err:print(fHTTP error occurred: {http_err})
except requests.exceptions.RequestException as err:print(fOther error occurred: {err})