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