python+requests接口自动化中,session的处理


在做接口自动化时,大部分的接口都需要保持登录状态才可以操作,针对不同项目的处理方式不同,这篇主要记录使用session来保持登录状态的处理。主要从两个方面来介绍:设置全局session和其他接口进行调用。

1.利用登录接口设置一个全局的session,登录成功后return  session,其他接口调用的登录的session,使session保持一致性

import requests
import json

import settings

s = requests.Session()    # 设置session全局变量

class LoginSession:
    # url和登录数据可以写死或者写在配置文件中数据和代码分离,根据具体项目需求灵活变动
    url = settings.PROJECT_HOST + settings.INTERFACE['wechat_login']
    mobile = settings.WECHAT_LOGIN_DATA['mobile']
    openId = settings.WECHAT_LOGIN_DATA['openId']

    def login(self):
        """
        登录session
        """
        data = {
            'mobile': self.mobile,
            'openId': self.openId
        }
        #  from表单的形式传参,需要将参数转换一下    # 注意请求参数的请求格式,这里是from表单形式的
        data = json.dumps(data)
        # 对于headers根据不同项目有不同的方式,可参考接口文档或者询问api开发,也可以根据抓包进行分析
        headers = {'Content-Type': 'application/json'}
        headers.update(settings.CUSTOM_HEADERS['v1'])
        res = s.post(url=self.url, data=data, headers=headers).json()
        return s
# 创建一个具体对象,方便调用
LSession = LoginSession().login()

2.其他接口进行调用时导入LSession,使用LSession代替request请求接口

from common.test import LSession
import settings

def baseinfo():
    """查询用户信息"""
    url = settings.PROJECT_HOST + settings.INTERFACE['baseinfo']
    headers = settings.CUSTOM_HEADERS['v1']
    res = LSession.get(url=url, headers=headers).json()
    return res
print(baseinfo())


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM