2012-06-15 121 views
4

我有蟒蛇下面的代碼蟒蛇硒多個測試用例

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 
from unittestzero import Assert 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.common.exceptions import ElementNotVisibleException 
import unittest, time, re 

class HomePageTest(unittest.TestCase): 
    expected_title=" some title here " 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.driver.implicitly_wait(30) 
     self.base_url = "https://somewebsite.com" 
     self.verificationErrors = [] 

    def test_home_page(self): 
     driver=self.driver 
     driver.get(self.base_url) 
     print "test some things here" 




    def test_whatever(self): 
     print "test some more things here" 

    def tearDown(self): 
     self.driver.quit() 


if __name__ == "__main__": 
    unittest.main() 

我的問題是功能test_home_page後,Firefox的實例關閉,再下一個test_whatever功能打開。我怎樣才能做到這一點,以便所有的測試用例都是從同一個firefox實例中執行的。

+1

任何代碼在'setUp' /'tearDown'將爲*執行的每個*測試用例運行。 –

回答

2

__init__初始化Firefox的驅動程序:

class HomePageTest(unittest.TestCase): 
    def __init__(self): 
     self.driver = webdriver.Firefox() 
     self.driver.implicitly_wait(30) 
     self.base_url = "https://somewebsite.com" 
     self.verificationErrors = [] 

    ... 

    def tearDown(self): 
     self.driver.quit() 
4

通常你想要的瀏覽器,讓你開始每個測試用乾淨的緩存,本地存儲,歷史數據庫等關門測試的瀏覽器測試之間關閉會減慢測試的速度,但它會節省調試時間,因爲測試不會與瀏覽器緩存和先前測試的歷史記錄交互。

+0

+1。從長遠來看,測試之間乾淨的瀏覽器實例實際上可以讓您通過允許測試同時運行來執行_speed_ _up_測試。如果您有幾個測試依賴於從測試中保留的瀏覽器狀態來測試,那麼您將被迫連續運行它們。但是,如果每個測試都能夠從乾淨的石板上運行,現在可以同時運行它們。對於一組5個測試案例,每個案例需要60秒完成,您的總測試時間從5分鐘減少到1分鐘。想象一下,如果您有1000個測試用例,則可節省成本! – Clandestine

1
def suite(): 

    suite = unittest.TestSuite() 
    suite.addTest(HomePageTest("test_home_page")) 
    suite.addTest(HomePageTest("test_whatever")) 
    return suite 

if __name__ == "__main__": 

    unittest.TextTestRunner().run(suite()) 

使用相同的Firefox實例運行許多測試用例。 順便說一句,我有一個問題,希望有人能夠知道它並回答我。 我如何在不同的瀏覽器中執行相同的測試用例?

1

使用setUpClasstearDownClass

class HomePageTest(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls): 
     cls.driver = webdriver.Firefox() 

    def setUp(self): 
     self.base_url = "https://somewebsite.com" 
     self.verificationErrors = [] 

    def tearDown(self): 
     self.driver.get(self.base_url) 

    @classmethod 
    def tearDownClass(cls): 
     cls.driver.quit() 



if __name__ == "__main__": 
    unittest.main()