Доступ к себе из декоратора - программирование
Подтвердить что ты не робот

Доступ к себе из декоратора

В методе 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()) из декоратора?

4b9b3361

Ответ 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