業務背景
有些業務在做接口自動化的時候,接口頭需要傳入token參數,那麼如何做呢?下邊是整理的內容,當然也借鑑了網友的一些資料。
1、先封裝對json格式的數據存儲,主要是用來保存和讀取獲取到的token值
operation_json.py
#coding:utf-8
import json
class OperetionJson:
def __init__(self,file_path=None):
if file_path == None:
self.file_path = '../case/user.json' # 獲取的token需要保存的地方
else:
self.file_path = file_path
self.data = self.read_data()
#讀取json文件
def read_data(self):
with open(self.file_path, 'r', encoding='utf-8') as fp:
data1 = fp.read()
if len(data1) > 0:
data = json.loads(data1)
else:
data = {}
return data
#根據關鍵字獲取數據
def get_data(self,id):
print(type(self.data))
return self.data[id]
#寫json
def write_data(self,data):
with open('../case/token.json','w') as fp:
fp.truncate() # 先清空之前的數據,再寫入,這樣每次登錄的token都是不一樣的
fp.write(json.dumps(data))
if __name__ == '__main__':
opjson = OperetionJson()
#print(opjson.get_data('shop'))
data = {
"user":"zhang",
"passwd":123456
}
opjson.write_data(data)
2、封裝如何獲取token腳本
get_token.py
import json
import requests
from common.operation_json import OperetionJson
class OperationHeader:
def __init__(self, response):
self.response = json.loads(response)
def get_response_token(self):
'''
獲取登錄返回的token
'''
token = {"data":{"token":self.response['data']['token']}}
#token = {"token": self.response['data']['token']}
return token
# 把數據寫入文件
def write_token(self):
op_json = OperetionJson()
op_json.write_data(self.get_response_token())
def get_response_msg(self):
reponse_msg = {"msg":self.response['msg']}
#print("reponse_msg:", reponse_msg)
return reponse_msg
if __name__ == '__main__':
# 一個登錄接口數據,僅供參考
url = "http://192.168.1.117/api/user/login"
data = {
"username": "zhang",
"password": "123456",
"deviceId": 0
}
res = requests.post(url,data).json()
res1 = json.dumps(res)
print(type(res1))
op = OperationHeader(res1)
print(op.get_response_msg())
3、在用例管理裏邊進行調用
部分代碼:test_interface.py
class Test_api(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 登錄獲取token
cls.s = requests.session() # 創建會話
url = "http://192.168.1.102/api/user/login"
headers = {"content-type":"application/json","Connection":"keep-alive"}
data = {"username":"zhang","password":"123456","deviceId":0}
res = requests.post(url=url, json=data, headers=headers).json()
res1 = json.dumps(res)
#print(type(res1))
op = OperationHeader(res1)
op.write_token()
writeexcel.copy_excel(testxlsx, reportxlsx) # 複製xlsx