Python+request 登錄接口reponse的返回值token跨py文件的傳遞《二》


主要使用場景:

  一般我們在進行接口測試時,依賴登錄接口后reponse中的某些返回值,因此需要將login接口單獨寫一個py文件,另外的py文件均可調用login的reponse返回值使用。共用登錄接口。

 

操作步驟:

  1、創建gol命名的py文件,對全局變量的使用方法進行封裝,后期有用到全局變量時均可使用

  2、單獨創建login的py文件,和todo的py文件。

  3、todo文件中調用login並運行,查看結果

頁面結構如下截圖:

  

操作步驟代碼如下:

1、gol.py 文件中主要是對之后全局變量可使用的封裝

# -*- coding: utf-8 -*-
#全局變量使用

def _init():  # 初始化
    global _global_dict
    _global_dict = {}


def set_value(key, value=None):
    """ 定義一個全局變量 """
    _global_dict[key] = value


def get_value(key, defValue=None):
    """ 獲得一個全局變量,不存在則返回默認值 """
    try:
        return _global_dict[key]
    except KeyError:
        return defValue

2、login.py 文件是登錄接口的方法。注意點:

  (1)需調用  import gol

  (2)需要初始化gol,gol._init()

  (3)對需要設置為全局變量值的寫法,gol.set_value("uuid",uuid)  這里我將uuid設置了全局變量

#!/usr/bin/env python
# coding=UTF-8
import requests
import gol

gol._init()   #初始化了gol def login():
    url = "https://***.***.com/v2/user/login"
    data = {
        "mobile": "12606666333",
        "password": "33a7d3da476a32ac237b3f603a1be62fad00299e0d4b5a8db8d913104edec629"
    }
    headers = {
        "version": "2.3.0",
        "version-id": "235",
        "device-id": "8BAFD18C-61E3-4BAF-8AB1-0BC16E567633",
        "time": "1557728866628",
        "channel-id": "001",
        "os": "ios",
        "Accept-Language": "zh-tw",
        "device-name": "iPhoneX",
        "User-Agent": "iBer/235 CFNetwork/976 Darwin/18.2.0",
        #注:一定不能加content-type,否則報簽名錯誤
        # Content-Type: multipart/form-data; boundary=vHsPJ5s6grMzpmWoZxd3T3o6.LcUWBvUUu0gDNubaf05Ve7kv6bAkH3s_rr0AEc2D6AbEh
        "sign": "a81b4379f504f330e83792ce2015e629"
    }

    r = requests.post(url=url, data=data, headers=headers, verify=False)
    uuid = str(r.json()["data"]["uuid"])
    gol.set_value("uuid",uuid)                #注意此處設置了uuid為全局變量
    token = str(r.json()["data"]["token"])
    gol.set_value("token",token)         #注意此處設置了token為全局變量
version = "2.2.1" version_id = "232" print "登錄成功,如下是reponse返回的內容" print r.text #login()

3、todo.py 文件是對某個模塊的接口編寫,中使用到了login接口的reponse返回值token和uuid,注意點:

  (1)需調用  import gol

  (2)不需要初始化gol._init()

  (3)獲取全局變量的寫法  gol.get_value("uuid") 

  (4)為了方便,我使用了unittest框架

#!/usr/bin/env python
# coding=UTF-8
import requests
import unittest
from login import login
import gol

class todo(unittest.TestCase):

    def setUp(self):
        login()
        
    def test_create_todo(self):
        #print login.login.uuid
        url = "https://***.***.com/v2/todo/create"
        data = {
            "name": "1239",
            "todo_remind_type": "0",
            "cate_uuid": "86799e50d9890ade579c4ac88059a5ff",
            "all_day": "1",
            "todo_start": "2019-05-13",
            "todo_end": "",
            "type": "0",
            "repeat_tyep": "0",
            "c_user_uuid": ""
        }
        headers = {
            "version": "2.3.0",
            "version-id": "235",
            "os": "ios",
            "sign": "123456",
            "is-test": "1",
            "uuid": gol.get_value("uuid"),   #對uuid的調用 "token": gol.get_value("token")   #對token的調用
        }

        r = requests.post(url=url, data=data, headers=headers, verify=False)
        print "%%%%%%%%%%%%%%%%%%start"
        print gol.get_value("uuid")    #對獲取的uuid進行打印,查看結果 
        print gol.get_value("token")
        print "%%%%%%%%%%%%%%%%%%end"
        print r.json()

if __name__ == "__main__":
    unittest.main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM