当前位置: 首页 > 后端技术 > Python

Unittest+Python接口自动化测试如何进行token关联?

时间:2023-03-26 15:27:46 Python

业务背景有些业务在做接口自动化的时候,接口头需要传入token参数,那么怎么办呢?以下是整理的内容,当然也借鉴了一些网友的资料。1.首先将数据存储封装成json格式,主要用于保存和读取获取的token值operation_json.py#coding:utf-8importjsonclassOperetionJson:def__init__(self,file_path=None):iffile_path==None:self.file_path='../case/user.json'#获取到的token需要保存到哪里else:self.file_path=file_pathself.data=self.read_data()#读取json文件defread_data(self):withopen(self.file_path,'r',encoding='utf-8')asfp:data1=fp.read()iflen(data1)>0:data=json.loads(data1)else:data={}returndata#根据关键字获取数据defget_data(self,id):print(type(self.data))returnself.data[id]#writejsondefwrite_data(self,data):withopen('../case/token.json','w')asfp: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.封装如何获取tokenscriptget_token.pyimportjsonimportrequestsfromcommon.operation_jsonimportOperetionJsonclassOperationHeader:def__init__(self,response):self.response=json.loads(response)defget_response_token(self):'''获取登录返回的token'''token={“数据”:{“token”:self.response['data']['token']}}#token={“token”:self.response['data']['token']}returntoken#将数据写入文件defwrite_token(self):op_json=OperetionJson()op_json.write_data(self.get_response_token())defget_response_msg(self):response_msg={"msg":self.response['msg']}#print("reponse_msg:",response_msg)返回response_msgif__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.pyclassTest_api(unittest.TestCase):@classmethoddefsetUpClass(cls):#登录获取tokencls.s=requests.session()#创建sessionurl="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