2016-08-23 119 views
0

如何定义自定义函数然后在测试函数中使用它,它运行在我运行单个测试用例时运行,但在运行多个测试用例时不起作用。在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

你可以使用unittest.setUpClass()实例化一个类级别driver实例。同样,如果需要,可以使用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")