主要使用場景:
一般我們在進行接口測試時,依賴登錄接口后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()