2016-08-23 1 views
0

어떻게 사용자 정의 함수를 정의한 다음 테스트 함수에서 사용할 수 있습니까? 단일 테스트 케이스를 실행할 때 작동하지만 여러 테스트 케이스를 실행할 때 작동하지 않습니다.셀레늄 파이썬에서 사용자 정의 함수 정의

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

여러 개의 테스트 사례를 실행하면 어떻게됩니까? – elethan

답변

0

당신은 클래스 레벨 driver 인스턴스를 인스턴스화 unittest.setUpClass()를 사용할 수 있습니다. 마찬가지로 tearDownClass()을 사용하여 필요한 경우 클래스 수준 변수를 정리할 수 있습니다.

setUpClass()tearDownClass()은 Test 클래스에서 한 번만 실행되므로이 ​​옵션을 사용하면 드라이버가 하나만 있음을 보증 할 수 있습니다. 그렇지 않으면 각 테스트 메소드에 대해 setUp()을 사용하면 매번 브라우저 인스턴스가 생성되므로 속도가 느려지고 메모리가 비효율적 일 수 있습니다.

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")