python接口自动化测试 - requests库的基础使用
简单介绍
requests库简单易用的HTTP库
Get请求
格式: requests.get(url)
注意:若需要传请求参数,可直接在 url 最后的 ? 后面,也可以调用 get() 时多加一个参数 params ,传入请求参数,注意需要是 dict 格式;如下图所示
1 url = 'http://127.0.0.1:8888/passport/user/login' 2 param = { 3 'username': '123', 4 'password': '321' 5 } 6 7 """通过params传参""" 8 res = requests.get(url, params=param) 9 # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} 10 print(res.json()) 11 12 """通过params方式传参,最终发出的url也是一致的""" 13 # http://127.0.0.1:8888/passport/user/login?username=123&password=321 14 print(res.url) 15 16 """通过url最后加上请求参数列表""" 17 url = 'http://127.0.0.1:8888/passport/user/login?username=123&password=321' 18 res = requests.get(url, verify=False) 19 # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} 20 print(res.text)
重点:发送请求赋值的res,可以看成是请求的上下文,既可以获取请求相关参数值,也可以获取响应相关参数值
Post请求
格式: requests.post(url,data)
注意:若无请求参数可不传 data ;当传入请求参数时,需要传 dict 格式
1 url = 'http://127.0.0.1:8888/passport/user/post_login' 2 data = { 3 'username': '123', 4 'password': '321' 5 } 6 7 """传入请求参数""" 8 res = requests.post(url, data=data) 9 # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} 10 print(res.json()) 11 12 """查看请求url""" 13 # http://127.0.0.1:8888/passport/user/post_login 14 print(res.url)
其他类型请求
1 r = requests.put('http://httpbin.org/put', data={'key': 'value'}).text 2 r = requests.delete('http://httpbin.org/delete').text 3 r = requests.head('http://httpbin.org/head').text
自定义headers和cookies
1 """自定义headers""" 2 url = 'https://api.github.com/some/endpoint' 3 headers = {'user-agent': 'my-app/0.0.1'} 4 5 r = requests.get(url, headers=headers) 6 # {'message': 'Not Found', 'documentation_url': 'https://developer.github.com/v3'} 7 print(r.json()) 8 9 """自定义cookies""" 10 url = 'http://httpbin.org/cookies' 11 cookies = dict(cookies_are='working') 12 cookies2 = {'cookies_are': 'working'} 13 14 r = requests.get(url, cookies=cookies) 15 # {'cookies': {'cookies_are': 'working'}} 16 print(r.json())
SSL 证书验证
当发送请求如果报以上错误时,可以在请求方法里加多一个字段 verify=False ,就可以解决此问题;此操作是为了免去验证步骤
url = 'https://www.imooc.com' res = requests.get(url, verify=False)
响应内容
注意:当调用 json() 时,确保响应内容是json格式字符串,否则会报错
1 url = 'http://127.0.0.1:8888/passport/user/login' 2 param = { 3 'username': '123', 4 'password': '321' 5 } 6 res = requests.get(url, params=param) 7 print('请求url: ' + res.url) 8 print('响应内容 json格式: ' + json.dumps(res.json())) 9 print('响应内容 字符串格式: ' + res.text) 10 print('响应内容 二进制格式: ' + str(res.content)) 11 print('响应码: ' + str(res.status_code))
获取header
注意:headers里面的key是大小写不敏感的
>>> r.headers['Content-Type'] 'application/json' >>> r.headers.get('content-type') 'application/json'
获取cookies
>>> r.cookies['example_cookie_name'] 'example_cookie_value'
标签:
Python接口自动化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具