从装饰者访问自我

在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