Доступ к себе из декоратора
В методе setUp() unittest я установил некоторые собственные переменные, которые позже упоминаются в реальных тестах. Я также создал декоратор, чтобы сделать некоторые записи. Есть ли способ, с помощью которого я могу получить доступ к этим переменным self из декоратора?
Для простоты я отправляю этот код:
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()) из декоратора?
Ответы
Ответ 1
Поскольку вы украшаете метод, а 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