我有一個包含測試模塊和init文件內部的包,我有一個包含一些操作的setUp方法。在程序包模塊中的任何單元測試運行之前,這些操作都可以正確執行。在setUp方法中,我想初始化一個全局變量,然後從包中的其他模塊訪問它。但這不起作用。Python:無法從初始化文件中導入在setUp方法中初始化的全局變量
# TestPackage/__init__.py
def setUp():
global spec_project
core_manager = get_core_manager()
spec_project = core_manager.get_spec()
#TestPackage/test_module.py
from TestPackage import spec_project
import unittest
class TestRules(unittest.TestCase):
def setUp(self):
spec_project.get_new_device()
喜歡我得到一個
ImportError: cannot import name spec_project
如果我初始化spec_project變量在init文件中設置方法,我可以訪問它的外部,但是其內容在手術後沒有改變setUp方法。
# TestPackage/__init__.py
spec_project = None
def setUp():
global spec_project
core_manager = get_core_manager()
spec_project = core_manager.get_spec()
#TestPackage/test_module.py
from TestPackage import spec_project
import unittest
class TestRules(unittest.TestCase):
def setUp(self):
spec_project.get_new_device()
喜歡我得到一個
AttributeError: 'NoneType' object has no attribute 'get_new_device'
如何初始化init文件的設置方法裏面spec_project變量,仍必須在包裝從其他模塊訪問它?
*「在程序包模塊中的任何單元測試運行之前,這些操作都已正確執行。」* - 您確定,因爲它好像沒有運行。 – jonrsharpe
@jonrsharpe我很確定,我可以在package setUp方法中打印內容以確保它按預期運行。 – PetMarion
''__init __。setUp'應該在導入TestPackage時運行嗎?我無法複製這種行爲。 – chepner