2012-05-09 5 views
2

포럼이있는 웹 사이트에 대해 몇 가지 테스트를 설정하려고합니다. 결과적으로 로그인, 스레드 생성 및 제거 등 여러 작업을 연속적으로 수행해야합니다.동일한 Firefox 인스턴스에서 Selenium 테스트를 순차적으로 실행합니다.

현재 Selenium을 사용하여 테스트 케이스를 고안하고 Webdriver와 함께 Python으로 내보냈습니다.

모든 테스트 사이에 하나의 webdriver 인스턴스 만 사용하여 연속적으로 실행할 수 있습니까? 파이썬 (Java에서 제공)에 익숙하지 않기 때문에 웹 디자이너를 인스턴스화하는 기본 클래스를 만들고, 모든 테스트에 기본 클래스를 서브 클래스 화하고, 테스트에 웹 편집기를 전달하는 것이 유일한 아이디어였습니다. (나는 단지 로하고 싶습니다.이 코드는입니다.하지만 파이썬을 배워야합니다.)

또는이를 수행 할 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에 처음 노출 된 것입니다. 그래서 눈부신 문제가있는 경우 의견을 보내 주시면 감사하겠습니다.