2016-08-23 2 views
0

Wie kann ich benutzerdefinierte Funktion definieren und dann in Test-Funktion verwenden, funktioniert es, wenn ich einzelne Testfall ausführen, aber nicht funktionieren, wenn ich mehrere Testfälle ausführen.Definieren Sie benutzerdefinierte Funktion in Selen Python

class AlphaTest(unittest.TestCase): 
     def setUp(self): 
      self.driver = webdriver.Firefox() 
      self.driver.implicitly_wait(30) 
      self.driver.get("http://google.com/") 

     def asserTrueId(self, value): 
      self.assertTrue(self.driver.find_element_by_id(value)) 
      time.sleep(1) 


     def test_flush_cache(self): 
      self.asserTrueId("block-menu-menu-menu-for-directories") 
+0

Was passiert, wenn Sie mehrere Testfälle ausführen? – elethan

Antwort

0

Sie könnten unittest.setUpClass() verwenden, um eine Klassenstufe driver Instanz zu instanziiert. Ähnlich können Sie tearDownClass() verwenden, um Variablen auf Klassenebene zu bereinigen, falls erforderlich.

Da setUpClass() und tearDownClass() nur einmal innerhalb Ihrer Testklasse ausgeführt werden, können Sie damit sicherstellen, dass nur ein Treiber vorhanden ist. Andernfalls würde für jede Testmethode die Verwendung von setUp() ausgeführt werden, wobei jedes Mal eine Browserinstanz erstellt wird, was langsam und möglicherweise speicherineffizient sein könnte.

class AlphaTest(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls): 
     cls.driver = webdriver.Firefox() 
     cls.driver.implicitly_wait(30) 
     cls.driver.get("http://google.com/") 

    def asserTrueId(self, value): 
     self.assertTrue(self.driver.find_element_by_id(value)) 
     time.sleep(1) 

    def test_flush_cache(self): 
     self.asserTrueId("block-menu-menu-menu-for-directories") 
Verwandte Themen