2012-05-09 80 views
2

我正在嘗試爲擁有論壇的網站設置一些測試。因此,許多這些事情需要連續完成,包括登錄,創建和刪除線程等。在同一個Firefox實例上按順序運行硒測試

目前我已經使用Selenium設計了測試用例,並使用webdriver將其導出到Python。

是否有可能使他們可以連續執行的所有測試之間只用一個實例的webdriver?我對python(來自Java)很陌生,所以我唯一的想法是創建一個基類來實例化webdriver,讓所有的測試子類化基礎,並讓webdriver傳遞給測試。 (我只想這在Java中,但我強迫自己學習一些Python)。

或者Selenium內置的另一個功能可以實現這個功能嗎?

謝謝你的時間。

+0

我可以幫助紅寶石,如果你想 – Amey

回答

0

我設法讓我的測試將基類的基類工作。此基類將創建一個靜態驅動程序,該驅動程序將由setUp()方法設置一次,並返回到以下測試。

from selenium import webdriver 
import unittest, time, re 

class TestBase(unittest.TestCase): 

    driver = None 
    rand = str(random.uniform(1,10)) 
    base_url = "desiredtestURLhere" 

    def setUp(self): 
     if (TestBase.driver==None): 
      TestBase.driver = webdriver.Firefox() 
      TestBase.driver.implicitly_wait(30) 
     return TestBase.driver 

,然後將兩個測試中,我跑了......

import unittest, time, re 
from testbase import TestBase 

class Login(TestBase): 

    def test_login(self): 
     driver = TestBase.driver 
     base_url = TestBase.base_url 
     driver.get(base_url) 
     # etc 

測試#2到連續運行...

import random 
import unittest, time, re 
from testbase import TestBase 

class CreateThread(TestBase): 

    def test_create_thread(self): 
     driver = TestBase.driver 
     base_url = TestBase.base_url 
     rand = TestBase.rand 
     driver.get(base_url + "/forum.php") 
     # etc 

我testsuite.py我會跑。 ..

import unittest, sys 
# The following imports are my test cases 
import login 
import create_thread 

def suite(): 
    tsuite = unittest.TestSuite() 
    tsuite.addTest(unittest.makeSuite(login.Login)) 
    tsuite.addTest(unittest.makeSuite(create_thread.CreateThread)) 
    return tsuite 

if __name__ == "__main__": 
    result = unittest.TextTestRunner(verbosity=2).run(suite()) 
    sys.exit(not result.wasSuccessful()) 

這是我第一次接觸Python所以如果有任何明顯的問題,我會很感激反饋。

相關問題