从装饰者访问自我
在unittest的setUp()方法中,我已经设置了一些自variables,这些自variables稍后在实际testing中被引用。 我也创build了一个装饰器来做一些日志logging。 有没有一种方法可以从装饰器访问这些自variables?
为了简单起见,我发布了这个代码:
def decorator(func): def _decorator(*args, **kwargs): # access a from TestSample func(*args, **kwargs) return _decorator class TestSample(unittest.TestCase): def setUp(self): self.a = 10 def tearDown(self): # tear down code @decorator def test_a(self): # testing code goes here
从装饰器访问(在setUp()中设置)的最佳方式是什么?
由于您正在装饰一个方法,而self
是一个方法参数,所以您的装饰器可以在运行时访问self
。 显然不是在parsetime,因为还没有对象,只是一个类。
所以你把你的装饰器改成:
def decorator(func): def _decorator(self, *args, **kwargs): # access a from TestSample print 'self is %s' % self func(self, *args, **kwargs) return _decorator