python requests session_python接口自动化中requests.session

一、作用:

在使用Python做接口自动化测试过程中,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息。

另外,大部分接口调用往往需要先进行登录操作,然后才能对相关的接口进行操作。

针对以上情形,通常我们会有两种做法

1、每次接口请求后获取到响应中的cookie,然后接下来的所有请求带上这个cookie

2、使用requests的session会话对象

今天分享一下使用requests的session会话对象,保持登录状态,然后对接口进行操作的场景。

二、requests.session用法

1、基本用法

s = requests.session() 会实例化会话一个会话对象

1、会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie

2、会话对象具有主要的 Requests API 的所有方法。你可以当成 Request去使用

import requests

s = requests.session() # 实例化会话对象

loginUrl = "https://q.test.dos.lixinchuxing.cn/auth/wxlogin"

data = {"username": "********", "password": "******"}

header = {"Content-Type": "application/json; charset=UTF-8"}

try:

#进行登录

res = s.post(url=loginUrl,json=data,headers=header, verify=False)

except Exception as e:

print("登录异常".format(e))

#下面为需要共享cookie的请求,put或者get请求用s.put和s.post来进行发起,就会自动带上共享的cookie

testurl = "https://XXXXXXXXX"

testdata = {}

res_test = s.get(url=testurl,data=data)

res_test2 = s.post(url=testurl,data=data)

2、通过设置session对象的属性来实现自定义请求方法的缺省数据

我们在测试中也会遇到这样一种情况,除了cookie之外,在请求时需要在header中加入额外的验证,这时我们可以用s.headers.update()方法,将其余请求方法中的headers属性合并起来作为最终的请求方法的headers

import requests

s = requests.session() # 实例化会话对象

loginUrl = "https://q.XXX.dos.lixinchuxing.cn/XXXX/wxlogin"

data = {"username": "********", "password": "******"}

header = {"Content-Type": "application/json; charset=UTF-8"}

try:

#进行登录

res = s.post(url=loginUrl,json=data,headers=header, verify=False)

#将X-CSRF-Token属性添加至session的header中,此后的请求请求头中会带上此属性

s.headers.update = ({"X-CSRF-Token":token})

except Exception as e:

print("登录异常".format(e))

三、完整代码

import requests

requests.packages.urllib3.disable_warnings() #忽略警告

def login():

s = requests.session() # 实例化会话对象

loginUrl = "https://q.XXX.dos.lixinchuxing.cn/XXXX/wxlogin"

data = {"username": "********", "password": "******"}

header = {"Content-Type": "application/json; charset=UTF-8"}

try:

res = s.post(

url=loginUrl,

json=data,

headers=header, verify=False)

print(res.cookies)

# 后续接口请求在header中要增加"X-CSRF-Token"属性,值为登录请求获取到的csrf-token值

token = res.cookies["csrf-token"]

s.headers.update = ({"X-CSRF-Token":token})

#返回登录处理后的session对象

return s

except Exception as e:

print("登录异常".format(e))

# 第二次请求的url

Url2 = 'https://q.test.dos.lixinchuxing.cn/api/v1/****/****/*****/evaluation/car_info'

data={"is_from_car_manage": "false"}

# 请求接口

Res2 = login().put(url=Url2,dat=data)

print(Res2.text)

经验证,可以正常向需要首先登陆的接口发送请求

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值