2014-01-14 3 views
3

내 영어는 매우 가난하지만 난 발생하는 문제를 설명하기 위해 최선을 다할 것입니다 실패 후 자동으로 webdriver 인스턴스를 닫기. 테스트가

나는 웹 사이트 내 스크립트이의 python.Because입니다 작성하는 데 사용되는 언어를 테스트 할 수 webdriver 셀레늄을 사용, 나는 Pyunit을 사용했다.

내 테스트 제품군에 예외가 없다면 예외가 발생하면 webdriver 인스턴스가 제대로 닫힙니다 (단, 크롬을 사용함). 일단 스크립트가 종료되고 스크립트를 종료해야합니다. 크롬을 수동으로 닫으십시오.

나는 방법은 내가 파이썬 프로세스가 종료 될 때, 나머지 개방 WebDriver 인스턴스도 폐쇄됩니다 달성 할 수 있을까. 그런데

, 나는 페이지 개체 디자인 패턴을 사용하고, 아래의 코드 내 스크립트의 일부입니다

class personalcenter(unittest.TestCase): 

    def setUp(self): 

     self.driver = webdriver.Chrome() 
     self.page = personalCenter(self.driver,"admin","123456") 

    def testAddWorkExp(self): 

     blahblahblah... 

    def tearDown(self): 

     self.page.quit() 
     self.driver.quit() 

if __name__ == "__main__": 

    unittest.main() 

나는 오랫동안이 문제의 해결책을 검색 비하하지만, 거의 모든 대답 java와 junit 또는 testNG에 의존합니다. 어떻게 Pyunit로이 문제를 해결할 수 있습니까? 모든 답변에 대한

감사합니다. tearDown() 문서에서

+0

self.page.quit()를 분해 기능에 바로 웹 사이트에서 로그 아웃하는 것을 의미한다, 그렇지 않습니다 크롬을 닫으려면 다음 명령을 사용하십시오. – justuno

답변

1

: 시험 방법 직후라는

방법이라고되었으며 기록 된 결과. 이 시험 방법은 예외가 발생한 경우에도라고, 그래서 서브 클래스의 구현은 내부 상태 확인에 대한 특히주의해야합니다. 이 방법으로 제기 된 예외는 모두 테스트 오류가 아닌 오류로 간주됩니다. setUp()에 관계없이 시험 방법의 결과의, 을 성공하면 이 메소드는 호출됩니다. 기본 구현은 아무 것도 수행하지 않습니다.

따라서 tearDown이 호출되지 않는 유일한 경우는 setUp이 실패한 경우입니다. 따라서 단순히 드라이버를 닫 설치 내부 예외를 catch하고 것을 다시 제기 :

def setUp(self): 
    self.driver = webdriver.Chrome() 
    try: 
     self.page = personalCenter(self.driver,"admin","123456") 
    except Exception: 
     self.driver.quit() 
     raise 
+0

답장을 보내 주셔서 감사합니다. 제게 많은 도움이되었습니다 ~ – justuno

+0

당신을 환영합니다! 문제가 해결되면 다른 사람들도 참조 할 수 있도록 답변을 승인으로 표시하십시오. –

관련 문제