Eclipse平臺,Python 3.3。全球名稱沒有爲第二單元測試定義
我創建了下面的代碼來演示使用全局變量和python unittest時出現的問題。我想知道爲什麼在
NameError: global name '_fred' is not defined
第二單元測試結果(第一直接重複)嘗試註釋掉的第二個測試,它會通過一切OK。
(注:我已經添加了什麼叫真正的代碼試圖例子後實現的簡短摘要,希望它會是那麼突兀那裏它不是真正相關的問題)
''' Global Problem
'''
import unittest
_fred = None
def start():
global _fred
if _fred is None:
_fred = 39
_fred += 3
def stop():
global _fred
if _fred is not None:
del _fred
class Test(unittest.TestCase):
def setUp(self):
start()
def tearDown(self):
stop()
def test_running_first_time(self):
assert(_fred == 42)
def test_running_second_time(self):
assert(_fred == 42)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
在真實代碼中_fred是引用從Thread派生的類的實例的變量(請參閱我在那裏做的),並在start方法中分配。
_fred = MyThreadClass()
同步隊列還有第二個全局變量。
該方法啓動和停止專用線程上的控制處理隊列項目。 'stop'停止處理,同時允許添加項目。
線程的API只允許單個調用啓動。所以要重新開始處理,我需要一個新的Thread實例。因此,對於猜測我的主要語言使用
if _fred is None:
和
del _fred
沒有獎品
啊。很高興知道差異。我用德爾,因爲我認爲它使代碼更具可讀性(和我一樣使用德爾像C/C + + DEL) – 2013-05-09 23:02:27