python_爬虫

requests-session对象保存信息

2021-09-07  本文已影响0人  Rainbow想喝奶茶

在一组测试用例中,如果对应的接口相互独立,没有什么公用信息,则用requests直接发起http请求即可。

但如果请求之间有关联,例如存在登录操作,在后续的每一步操作中均需要保持登录状态,这种情况下用requests则需要在每一步中都传入cookies等登录相关的信息来完成请求。

为了简化这部分操作,可以应用requests库中的session对象来进行请求及存储。

session

session,即会话,它可以在一次会话之中长久的保存信息,保证此次会话中的所有请求均可应用此信息。建立方式为:

s=requests.session()

在发起请求上,它与requests类似,即

s.get('https://www.***.com')
s.post('https://www.***.com',json={"name":"1"})

设置headers

目前实现了在headers中保存token的功能,下方为示例代码。

  1. 在测试用例类前,建立会话对象。
s=requests.session()
  1. 建立测试类
class Test_session():

    def test_one(self,url):
        url = 'https://www.***.com/1'
        params = {"class_id": "abc"}
        s.headers["Authorization"]="Bearer token"
        res = s.get(url=url, params=params)
        assert res.status_code == 200

    def test_two(self,url):
        url = 'https://www.***.com/2'
        params={"num":1}
        res=s.get(url=url,params=params)
        print(s.headers)
        assert res.status_code==200

在这个测试类中,test_one测试用例中请求的接口必须带有token,所以在建立的session对象的headers属性中传入token值。

然后在test_two测试用例中打印headers,会看到在test_one中传入的token值,证明在本次会话中,headers中的token始终被保存,可以应用于当前会话的所有测试用例中。

session的其它用法以及cookies的读取还需要进一步的学习,我们下次更新见~

自我记录,有错误欢迎指正~

上一篇 下一篇

猜你喜欢

热点阅读