2011-12-02 6 views
6

का उपयोग मेरे कोड इस तरह है:मैं सूट में अपने टेस्ट क्लास में एक वेबड्राइवर इंस्टेंस कैसे साझा कर सकता हूं? मैं Selenium2 और अजगर

class class1(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 

    def testListRolesTitle(self): 
     driver=self.driver 
     driver.get("www.google.com") 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 
     asert... 


class class2(unittest.TestCase): 

    def setUp(self): 
     self.driver = webdriver.Firefox() 

    def testListRolesTitle(self): 
     driver=self.driver 
     driver.get("www.google.com") 
     assert... 

    def tearDown(self): 
     self.driver.quit() 
     self.assertEqual([], self.verificationErrors) 

def suite(): 
    s1 = unittest.TestLoader().loadTestsFromTestCase(class1) 
    s2 = unittest.TestLoader().loadTestsFromTestCase(class2) 

    return unittest.TestSuite([s1,s2]) 

if __name__ == "__main__": 

    run(suite()) 

जब मैं सूट दौड़ा परीक्षण वर्गों के दोनों सेटअप methord में एक नया फ़ायरफ़ॉक्स उदाहरण शुरू कर दिया। मेरा सवाल यह है कि दो टेस्ट क्लास किए गए समान फ़ायरफ़ॉक्स उदाहरण का उपयोग करना संभव है? मैं उन्हें एक वर्ग में एक साथ रखना नहीं चाहता हूं।

कोई विचार?

उत्तर

2

आपके पास एक सेटअप फ़ंक्शन हो सकता है जो पूरे वर्ग के बजाय पूरे मॉड्यूल पर लागू होता है जैसा कि here समझाया गया है।

def setUpModule(): 
    DRIVER = webdriver.Firefox() 

def tearDownModule(): 
    DRIVER.quit() 

ध्यान दें कि DRIVER इस मामले में एक वैश्विक चर रहा है इतना है कि यह सभी वर्गों की वस्तुओं के लिए उपलब्ध है:

आपके मामले में, ऐसा ही कुछ होगा।

इसके अलावा, ध्यान दें कि परीक्षण मामले आदेश के कारण हो सकता है कि आपके मॉड्यूल सेटअप कार्यों को कई बार के रूप में दस्तावेज में विस्तार से बताया कहा जाता है:

unittest परीक्षण लोडर द्वारा बनाई परीक्षणों के डिफ़ॉल्ट अनुक्रम समूह के लिए सभी परीक्षण है एक ही मॉड्यूल और कक्षाओं से एक साथ। यह सेट अप क्लास/सेटअप मॉड्यूल (आदि) को प्रति कक्षा और मॉड्यूल में बिल्कुल एक बार बुलाया जाएगा। यदि आप ऑर्डर को यादृच्छिक करते हैं, तो विभिन्न मॉड्यूल और कक्षाओं के परीक्षण एक-दूसरे के समीप होते हैं, तो इन साझा फ़िक्स्चर फ़ंक्शंस को एक परीक्षण परीक्षण में कई बार कहा जा सकता है।

यह इस उदाहरण स्पष्ट करना चाहिए जब प्रत्येक सेटअप विधि/समारोह निष्पादित किया जाता है लगता है:

import unittest 

def setUpModule(): 
    print 'Module setup...' 

def tearDownModule(): 
    print 'Module teardown...' 

class Test(unittest.TestCase): 
    def setUp(self): 
     print 'Class setup...' 

    def tearDown(self): 
     print 'Class teardown...' 

    def test_one(self): 
     print 'One' 

    def test_two(self): 
     print 'Two' 

उत्पादन इस से है:

$ python -m unittest my_test.py 

Module setup... 
Class setup... 
One 
Class teardown... 
.Class setup... 
Two 
Class teardown... 
.Module teardown... 

---------------------------------------------------------------------- 
Ran 2 tests in 0.000s 

OK 
+0

धन्यवाद, लेकिन मैं अभी भी संदेह में हूँ। – user1076879

+0

सेटअप/टियरडाउन कोड साझा करने के बाद से आपके पास एक ही कक्षा में दोनों टेस्ट केस होना चाहिए। कक्षा में सेटअप/टियरडाउन प्रत्येक टेस्ट केस के लिए निष्पादित किया जाएगा और मॉड्यूल में सेटअप/टियरडाउन पूरे मॉड्यूल के लिए एक बार निष्पादित किया जाएगा। – jcollado

+0

हाय, बहुत बहुत धन्यवाद। लेकिन अगर मैं setUpModule() और tearDownModule() का उपयोग करता हूं तो मुझे दो परीक्षण कक्षाओं को एक फ़ाइल में रखना होगा, है ना? – user1076879

संबंधित मुद्दे

 संबंधित मुद्दे