在做接口自動化時,大部分的接口都需要保持登錄狀態才可以操作,針對不同項目的處理方式不同,這篇主要記錄使用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())