前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >API接口测试-使用python发送HTTP请求(Requests)

API接口测试-使用python发送HTTP请求(Requests)

作者头像
伤心的辣条
发布2022-12-14 14:55:49
2K0
发布2022-12-14 14:55:49
举报
文章被收录于专栏:伤心的辣条

作者:伤心的辣条

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。

发送HTTP请求的方法有很多,常用的工具就五花八门,如postman、Jmeter、Loadrunner等,但如果想和自动化代码结合起来,python的requests库必不可少,本文分享使用python发送HTTP请求及cookie和session相关内容。

Requests库介绍:

基于urllib,使用Python语言编写,采用Apache2 Licensed开源协议的HTTP库;和urllib库相比,Requests库更加方便。

(国外)安装方法一:

代码语言:javascript
复制
pip install requests

(国内)安装方法二:

代码语言:javascript
复制
pip install requests -i https://pypi.douban.com/simple/

Requests语法:

代码语言:javascript
复制
resp = requests.get(url='URL地址',headers={K:V},data={K:V},json={K:V},cookies=cookie数据[如:令牌])
 
# 其中:
# get()对应要发送的http请求方法,可根据实际情况修改为post、put、delete
# url:对应http请求行中的url
# headers:对应http请求的请求头。键值对格式{key:value}
# data:针对表单类型的  请求体。数据格式同上,也是键值对{key:value}
# json:针对json类型的  请求体。数据格式同上,也是键值对{key:value}
# cookies:存储的用户相关的信息
# resp:代表http请求发送成功后返回的响应包(响应行、响应头、响应体)
 
# 例:
import requests
# 导包
 
resp = requests.post(url='https://www.baidu.com',
                     # 填写url
                     headers={"Content-Type": "application/x-www-form-urlencoded"},
                     # 填写请求头
                     data={"username": "liuguoxing", "passwd": "123456"})
# 没有其它信息需求可以不携带,参数可选
print(resp.text)
# 打印文本格式的响应
print(resp.json())
# 打印json格式响应

Cookie的捕获和传递:

代码语言:javascript
复制
import requests
# 导包
 
resp = requests.get(url='http://xxxx')
# 请求url获取响应内容
my_cookie = resp.cookies
# 捕获cookie
resp_2 = requests.post(url='xxx', headers='xxx', data='xxx', cookies=my_cookie)
# cookie在两个请求之间的传递
print(resp_2.text)
# 打印第二个接口内容
 
# 不常用获取方法↓
'''
resp.url   获取URL
resp.status_code   获取状态码
resp.encoding  获取编码格式
resp.headers   获取响应头
resp.text 获取文本格式响应体数据
resp.content  获取字节码格式响应体数据
resp.json()  获取json格式响应体数据
'''

Cookie相关介绍:

cookie不是http协议自带,是工程师为了弥补http是无状态协议的这一特性而发明的技术。

cookie主要存在浏览器端(客户端),主要用来存储少量的用户不敏感信息。

cookie的默认大小是4K(可以扩展),存储数据量较小。

cookie中的数据,可以十分方便的获取到。因此,一般不用来存储重要敏感数据。

Cookie+Session认证方式:

上图以百度的访问请求为例,描述sessionID的传递过程,其中session ID经过哈希算法加密ID的部分已省略。

Session相关介绍:

Session 就是“会话”

Session 出现在计算机网络通信中,从浏览器与服务器建立连接开始,一直到与服务器断开连接,以上整个过程称之为一个“会话”。如:输入用户名、密码登录,产生会话——用户注销、退出、浏览器关闭,会话结束。

Session特性:

Session 不是http协议的一部分,也不是浏览器的一部分

Session的数据是保存在服务器端的

Session中可以保存的数据类型较为广泛,容量较大。(受服务器影响)

可以借助Session来管理cookie

通过Session管理cookie:

例子场景:先请求验证码获取接口,再将验证码接口返回的内容传递给登录接口

1、创建一个Session实例(类的对象)

2、使用Session实例调用验证码接口请求(GET)

3、使用同一个Session实例调用登录接口请求(POST)

4、请求发送结束需要关闭Session

代码语言:javascript
复制
1.my_session = requests.Session()
2.resp_verify = my_session.get(url='xxx')
3.resp_login = my_session.post(url='xxx',data='xxxx',headers='xxxx')
4.my_session.close()
 
# 通过session管理cookie可以不需要传递cookie,实现了自动传参

以上就是利用Requests发送HTTP请求以及利用session完成cookie的自动传递方法了,如有疑问欢迎评论区留言讨论~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伤心的辣条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档