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