Python 中 global 關鍵字可以定義一個變量為全局變量,但是這個僅限於在當前模塊(py文件)中調用全局變量,在其他py文件 再次使用 global x 也是無法訪問到的,因為在這個py模塊中並沒有一個叫做x的變量,於是就會報錯 未定義。
我們知道Python使用變量的時候是可以直接使用的
a = {} b = 111 c = "333"
而不需要先定義
var a var b = 2 var c = '222'
這樣的話,在函數內部就無法操作外部的變量了,因為它總會認為你是在定義一個新變量並且賦值,不過 global 就可以解決這個問題。
global 的基礎用法
x = 6 def func(): global x # 定義全局變量x x = 1 func() print (x) # 輸出1
這個時候,在定義本全局變量的模塊內可以隨意使用變量x
但是別的模塊(py文件)再次使用 global x 卻是無法訪問到的,因為在這個py模塊中並沒有一個叫做x的變量。
既然只能在本模塊可以使用,那么我們就專門為全局變量定義一個全局變量管理模塊,然后在別的模塊中導入全局變量管理模塊,我們以Key-Value的形式存儲和獲取變量,這樣就可以簡單的實現全局變量啦。
全局變量管理模塊 global_variable.py
#!/usr/bin/env python3 # -*- coding:utf-8-*- # 全局變量管理模塊 def _init(): """在主模塊初始化""" global GLOBALS_DICT GLOBALS_DICT = {} def set(name, value): """設置""" try: GLOBALS_DICT[name] = value return True except KeyError: return False def get(name): """取值""" try: return GLOBALS_DICT[name] except KeyError: return "Not Found"
配置文件, 設置全局變量 config.py
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # 在本模塊中定義全局變量 import global_variable as glv glv._init() glv._set("APP_NAME", "全局變量測試") glv._set("author", "doudoudzj")
主程序, 獲取全局變量 main.py(任意需要使用全局變量的py模塊)
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # 主程序 import config # 加載配置 import global_variable as glv print(glv._get("APP_NAME")) print(glv._get("author"))
然后運行主程序文件
python3 main.py # 輸出內容如下 全局變量測試 doudoudzj
接口自動化中使用場景:
比如系統的所有接口都依賴登錄接口返回的token,那么就可以在config.py文件中調用登錄的接口,拿到登錄接口返回的token並調用_set()方法設置token為全局變量,則接下來要測試用例文件中通過_get()方法即可獲取到請求所需要的token,所有的用例文件中都可調用,一定程度避免每調一次接口就請求一次登陸接口。