接口测试中 requests 工具的使用总结【接口测试】

接口测试中 requests 工具的使用总结

1️⃣ 安装与基础介绍

requests 是 Python 中使用最广泛的 HTTP 请求库之一,其设计简单优雅,特别适合接口测试与接口自动化脚本编写。

安装方式:

pip install requests

导入模块:

import requests

2️⃣ 常用请求方法

requests 支持常见的 HTTP 动作,包括 GETPOSTPUTDELETE 等。以下是基本用法:

# GET 请求
res = requests.get(url, params=params, headers=headers)

# POST 请求(发送表单)
res = requests.post(url, data=data)

# POST 请求(发送 JSON)
res = requests.post(url, json=json_data)

# PUT 请求
res = requests.put(url, data=data)

# DELETE 请求
res = requests.delete(url)

参数说明:

  • url:请求地址;
  • params:GET 请求的 URL 参数;
  • data:以表单形式传递的请求体;
  • json:以 JSON 格式传递的请求体;
  • headers:请求头信息。

3️⃣ 常用参数说明

✅ URL 参数(params

以字典形式传递,requests 会自动拼接到 URL 上:

params = {'key': 'value'}
res = requests.get('http://httpbin.org/get', params=params)
✅ 请求头(headers

自定义 User-Agent、Token 等字段:

headers = {'User-Agent': 'my-test', 'Authorization': 'Bearer token'}
res = requests.get(url, headers=headers)
✅ 请求体

(1)表单形式:

data = {'username': 'admin', 'password': '123456'}
res = requests.post(url, data=data)

(2)JSON 格式:

json_data = {'username': 'admin', 'password': '123456'}
res = requests.post(url, json=json_data)

使用 json 参数自动设置 Content-Type: application/json


4️⃣ 响应内容获取方式

res.text         # 返回字符串格式的响应内容
res.json()       # 以 JSON 格式解析响应内容(前提是响应为 JSON)
res.content      # 获取字节数据(适用于图片、文件下载)
res.status_code  # HTTP 状态码
res.headers      # 返回响应头信息

可用 res.encoding = 'utf-8' 显式指定字符编码,防止乱码。


5️⃣ 超时、代理和 SSL 证书验证

✅ 设置请求超时时间:
res = requests.get(url, timeout=10)

单位为秒;请求超过指定时间未响应将抛出异常。

✅ 设置代理:
proxies = {
    'http': 'http://127.0.0.1:8888',
    'https': 'http://127.0.0.1:8888'
}
res = requests.get(url, proxies=proxies)
✅ 忽略 HTTPS 证书验证:
res = requests.get(url, verify=False)

注意:测试环境可使用,正式环境需开启验证以确保安全性。


6️⃣ Cookie 与 Session 管理

✅ 自动携带 Cookie:
s = requests.Session()
s.get(url)  # 第一次请求,获取并存储 Cookie
s.get(url2)  # 自动附带 Cookie 请求第二个接口

适用于登录态保持、跨接口调用的场景。

✅ 手动设置 Cookie:
cookies = {'sessionid': '123abc'}
res = requests.get(url, cookies=cookies)

7️⃣ 文件上传与下载

✅ 上传文件:
files = {'file': open('test.txt', 'rb')}
res = requests.post(url, files=files)
✅ 下载文件:
res = requests.get(url)
with open('download.png', 'wb') as f:
    f.write(res.content)

8️⃣ 异常处理

使用 try...except 可防止程序因请求异常而中断:

try:
    res = requests.get(url, timeout=5)
    res.raise_for_status()  # 状态码异常会抛出异常
except requests.exceptions.RequestException as e:
    print(f'请求异常:{e}')

9️⃣ 封装一个通用请求方法(推荐)

为了提高代码复用性,可将请求过程封装为函数:

def send_request(method, url, params=None, data=None, json=None, headers=None, cookies=None, files=None):
    method = method.upper()
    if method == 'GET':
        return requests.get(url, params=params, headers=headers, cookies=cookies)
    elif method == 'POST':
        return requests.post(url, data=data, json=json, headers=headers, cookies=cookies, files=files)
    elif method == 'PUT':
        return requests.put(url, data=data, headers=headers, cookies=cookies)
    elif method == 'DELETE':
        return requests.delete(url, params=params, headers=headers, cookies=cookies)
    else:
        raise ValueError(f"不支持的请求方法: {method}")

1️⃣0️⃣ 建议与扩展说明

  • requests 适合用于功能测试、接口联调、接口自动化等场景;
  • 结合 pytestunittest 可实现完整接口测试框架;
  • 抓包工具如 Fiddler 或 Charles 可配合调试请求过程;
  • 若需模拟高并发压测,可进一步学习 locustJMeter 等工具;
  • 推荐集成到自动化平台中,提升测试效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值