UI 기반의 테스트를 진행하다보면 예상치 못한 부분에서 Timeout Exception 에러로 허무하게 테스트가 중단될 때가 있다.
Timeout Exception은 이름에서 유추할 수 있듯이 설정한 대기시간이 넘도록 조건을 만족하지 못해 더이상 테스트를 진행할 수 없을 때 나타나는 오류다.

예를 들면 다음과 같은 소스코드가 있을 때,

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

# Driver의 기본 대기 시간은 20초
wait = WebDriverWait(driver, 20)

# btn_login이 클릭가능할 때까지 대기 (최대 20초)
login = wait.until(EC.element_to_bo_clickable((By.ID, 'com.sample.package:id/btn_login'))
login.click()

 

임의의 오류로 20초가 지나도록 로그인 버튼이 클릭 가능한 상태가 되지 않으면 Timeout Exception 오류가 나고,

이후 스크립트는 실행되지 않고, 테스트는 자동 종료된다.

이를 방지하기 위해 필요한 것이 Timeout Exception 예외 처리다.

즉, Timeout이 생기더라도 스크립트를 중단하지 않고 그대로 다음 스크립트를 진행하기 위한 예외 처리이다.

 

try:
       # Timeout 오류가 날 수 있는 스크립트

except TimeoutException:
       # Timeout 오류가 난 경우 실행 될 스크립트

 

+ Recent posts