Python接口测试教程- requests 会话对象

由于 HTTP 是无状态的协议,同一个客户端每个请求都是独立的,上一个请求的任意数据都无法传递到下一个请求。为了在不同的请求间保存一些共同的数据(比如登录状态),就会用到 cookie、 session。

在 requests 中要处理这种 cookie 和 session,需要用到 Session 对象(会话对象)。此对象会帮助我们自动保持类似 cookie 和 session。

这样不用我们专门处理 cookie 和 session。毕竟我们测试的绝大部分接口,都会依赖登录后在 cookie 和 session 中储存的登录认证信息。

通过我们的 showdoc 系统来演示一下:

  1. 登录 showdoc
  2. 查看当前用户的项目列表
from urllib import parse
from pprint import pprint  # => 为了让字典打印更好看
import requests


host = 'http://127.0.0.1'
user = {
    'username': 'showdoc',
    'password':'123456'
}

s = requests.Session() # => 会话对象

# 登录
login_url = parse.urljoin(host, '/showdoc/server/index.php?s=/api/user/login')
lr = s.post(login_url, data=user) # => 登录后cookie和session都会被 s 对象保存
pprint(lr.json())

# 查看当前用户项目
mylist_url = parse.urljoin(host, '/showdoc/server/index.php?s=/api/item/myList')
mr = s.get(mylist_url)   # => 通过 s 对象调用后续的请求
pprint(mr.json())

从上面的代码我们可以看出,先通过 Session 生成会话对象,通过会话对象调用 get 或者 post 方法完成请求。会话对象会保存这些请求之间的 cookie 和 session。

如果不信,你可以试试直接访问mylist接口。然后再试试使用会话对象访问。

会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。
会话对象具有主要的 Requests API 的所有方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值