Dostęp do siebie z dekoratora

W metodzie setUp() unittest ustawiłem kilka zmiennych self , które są później przywoływane w rzeczywistych testach. Stworzyłem też dekoratora do wycinania drzew. Czy jest jakiś sposób, w jaki mogę uzyskać dostęp do tych zmiennych self z dekoratora?

Dla uproszczenia zamieszczam ten kod:

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

Jaki byłby najlepszy sposób dostępu a (set in setUp()) z dekoratora?

Author: kevin, 2011-09-29

1 answers

Ponieważ dekorujesz metodę, a {[1] } jest argumentem metody, Twój dekorator ma dostęp do self w czasie wykonywania. Oczywiście nie w parsetime, ponieważ nie ma jeszcze obiektów, tylko Klasa.

Więc zmieniasz dekoratora na:

def decorator(func):
    def _decorator(self, *args, **kwargs):
        # access a from TestSample
        print 'self is %s' % self
        func(self, *args, **kwargs)
    return _decorator
 85
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-28 23:07:37