• Unittest+Python接口自动化测试进行token关联


    引用原地址:https://blog.csdn.net/NoamaNelson/article/details/105147588

    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

    import unittest
    import requests
    import json
    from common.get_token import OperationHeader
    
    class TestMethod(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            # 登录获取token
            cls.s = requests.session() # 创建会话
            headers = {"content-type":"application/json","Connection":"keep-alive"}
            url = "https://api***/user/login"
            data = {
                "username": "admin",
                "password": "admin"
            }
            res = requests.post(url=url, json=data, headers=headers).json()
            res1 = json.dumps(res)
            #print(type(res1))
            op = OperationHeader(res1)
            op.write_token()
    
        def test_001(self):
            print("123")
    
    if __name__=="__main__":
        unittest.main()

  • 相关阅读:
    BPC (9) SAP BI & BPC 安装 : 一个外行眼里的千奇百怪 (1)
    ESB (2) POCSofewareAG
    BPC (7) BPC Netweaver 7 和 microsoft 7 版本的差异
    ESB (3) POCOralce ESB
    厘清了xorg里的一些概念
    Top命令和Kill命令
    ubuntu中文英文环境切换
    /etc/passwd 文件内容详细解释
    [分享] Linux下用Anjuta写个Hello World 的C++程序竟如此简单!
    /proc目录
  • 原文地址:https://www.cnblogs.com/hl-2030/p/13864403.html
Copyright © 2020-2023  润新知