2016-08-23 8 views
0

カスタム関数を定義してそれをテスト関数で使用する方法は、単一のテストケースを実行するときに機能しますが、複数のテストケースを実行すると機能しません。selenium 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

複数のテストケースを実行するとどうなりますか? – elethan

答えて

0

あなたはクラスレベルdriverインスタンスをインスタンス化するためにunittest.setUpClass()を使用することができます。同様に、必要に応じてtearDownClass()を使用してクラスレベルの変数をクリーンアップすることもできます。

setUpClass()tearDownClass()は、テストクラス内で1回だけ実行されるため、これを使用して1つのドライバしかないことを保証できます。それ以外の場合は、毎回ブラウザインスタンスを作成する各テストメソッドに対して、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") 
関連する問題