2016-09-08 2 views
7

के साथ परीक्षण वर्ग विधियों का परीक्षण परीक्षण मामलों के लिए विभिन्न उदाहरणों के दस्तावेज सूचीबद्ध हैं। उनमें से ज्यादातर कार्यों का परीक्षण दिखाते हैं। लेकिन मुझे कक्षाओं और वर्ग विधियों का परीक्षण करने का एक उदाहरण याद आ रहा है।पाइस्टेस्ट

class SuperCool(object): 

    def action(self, x): 
     return x * x 

कैसे tests/test_cool.py में अनुसार परीक्षण वर्ग देखने के लिए है: मान लें कि हम मॉड्यूल cool.py में निम्नलिखित वर्ग है हम परीक्षण के लिए करना चाहते हैं?

class TestSuperCool(): 

    def test_action(self, x): 
     pass 

कैसे test_action()action() परीक्षण करने के लिए इस्तेमाल किया जा सकता?

उत्तर

5

आप सभी परीक्षण करने के लिए एक वर्ग विधि उस वर्ग का दृष्टांत है, और कहा कि उदाहरण पर विधि कॉल करने की जरूरत है:

def test_action(self): 
    sc = SuperCool() 
    assert sc.action(1) == 1 
+0

तो, वहाँ pytest में शामिल मानचित्रण का कोई प्रकार है? – laserbrain

+0

@ लेज़रब्रेन मैपिंग से आपका क्या मतलब है? –

+0

@ लेज़रब्रेन मुझे यकीन नहीं है कि इस मामले में मैपिंग का मतलब क्या है, लेकिन यदि आप इसे आजमाते हैं तो मेरा उदाहरण आपके लिए काम करना चाहिए। – elethan

2

ठीक है, एक तरह से सिर्फ परीक्षा पद्धति के भीतर अपनी वस्तु बना सकते हैं और बातचीत करने के लिए है इसके साथ वहाँ से:

def test_action(self, x): 
    o = SuperCool() 
    assert o.action(2) == 4 

आप जाहिरा तौर पर यहाँ तरीकों का उपयोग कर unittest क्लासिक setup और teardown शैली की तरह कुछ का उपयोग कर सकते हैं: http://doc.pytest.org/en/latest/xunit_setup.html

मैं 100% नहीं हूं कि उनका उपयोग कैसे किया जाता है क्योंकि pytest के लिए प्रलेखन भयानक है।

संपादित करें: हाँ तो जाहिरा तौर पर अगर आप की तरह

class TestSuperCool(): 
    def setup(self): 
     self.sc = SuperCool() 

    ... 

    # test using self.sc down here 
0

कुछ करना मैं किसी भी जुड़नार केवल या डेटा parametrization (डेटाबेस कनेक्शन की तरह) परीक्षण वातावरण बनाने के लिए प्रयोग करेंगे। parametrization साथ

def test_action_without_fixtures(): 
    sc = SuperCool() 
    sc.element = 'snow' 
    sc.melt() 
    assert sc.element == 'water' 

उदाहरण::

अपने डेटा अपेक्षाकृत मामूली बात है, तो आप इसे testcase अंदर परिभाषित कर सकते हैं

@pytest.mark.parametrize("element, expected", [('snow', 'water'), ('tin', 'solder')]) 
def test_action_with_parametrization(element, expected): 
    sc = SuperCool() 
    sc.element = element 
    sc.melt() 
    assert sc.element == expected 
संबंधित मुद्दे