डेकोरेटर से स्व


80

SetUp () में एकतरफा तरीके से मैंने कुछ स्व चरों को सेटअप किया है , जिन्हें बाद में वास्तविक परीक्षणों में संदर्भित किया गया है। मैंने कुछ लॉगिंग करने के लिए डेकोरेटर भी बनाया है। क्या कोई ऐसा तरीका है जिसमें मैं डेकोरेटर से उन सेल्फ वेरिएबल्स को एक्सेस कर सकता हूं ?

सादगी के लिए, मैं यह कोड पोस्ट कर रहा हूं:

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

डेकोरेटर से (सेटअप में सेट) () तक पहुंचने का सबसे अच्छा तरीका क्या होगा ?

जवाबों:


121

चूंकि आप एक विधि सजा रहे हैं, और selfएक विधि तर्क है, आपके डेकोरेटर की selfरनटाइम पर पहुंच है। जाहिर तौर पर परसटाइम पर नहीं, क्योंकि अभी कोई वस्तु नहीं है, सिर्फ क्लास है।

इसलिए आप अपने डेकोरेटर को इसमें बदलें:

def decorator(func):
    def _decorator(self, *args, **kwargs):
        # access a from TestSample
        print 'self is %s' % self
        return func(self, *args, **kwargs)
    return _decorator
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.