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,所有的用例文件中都可調用,一定程度避免每調一次接口就請求一次登陸接口。
