[python] 웹 자동화 테스트에서 예외 처리하기

웹 자동화 테스트를 개발하다보면 예외 상황에 대한 처리가 필요한 경우가 많습니다. 이러한 예외 상황은 네트워크 문제, 요청 실패, 엘리먼트를 찾을 수 없는 경우 등 다양할 수 있습니다. 이번 글에서는 Python을 사용하여 웹 자동화 테스트에서 예외 처리를 하는 방법을 알아보겠습니다.

1. try-except 문 사용하기

Python의 예외 처리에는 try-except 문을 사용합니다. try 블록 내에서 예외가 발생하면 except 블록 내에서 해당 예외를 처리할 수 있습니다. 웹 자동화 테스트에서 예외 상황을 처리하기 위해 이 구조를 사용할 수 있습니다.

try:
    # 웹 자동화 테스트 수행
    ...
except Exception as e:
    # 예외 처리
    ...

예를 들어, 페이지를 로드하는 도중 네트워크 문제가 발생하면 requests 모듈에서 발생하는 requests.exceptions.RequestException 예외를 처리할 수 있습니다.

import requests

try:
    response = requests.get(url)
    # 페이지 로드 후 다음 동작 수행
    ...
except requests.exceptions.RequestException as e:
    # 네트워크 문제 예외 처리
    ...

2. assert 문 사용하기

또 다른 예외 처리 방법으로는 assert 문을 사용하는 것입니다. assert 문은 조건문이 False인 경우 AssertionError 예외를 발생시킵니다. 웹 자동화 테스트에서는 화면에 특정 엘리먼트가 존재하는지 확인하는 등의 경우에 유용하게 사용할 수 있습니다.

try:
    # 엘리먼트 확인
    assert driver.find_element_by_xpath(xpath).is_displayed()
    # 엘리먼트가 존재하는 경우 다음 동작 수행
    ...
except AssertionError:
    # 엘리먼트가 존재하지 않는 예외 처리
    ...

3. 사용자 정의 예외 만들기

특정한 예외 상황에 대해 더욱 상세한 예외 처리를 하고 싶을 수 있습니다. 이럴 때는 사용자 정의 예외를 만들어 사용할 수 있습니다. Python에서는 Exception 클래스를 상속받아 새로운 예외 클래스를 만들 수 있습니다.

class CustomException(Exception):
    pass

try:
    # 특정한 예외 상황이 발생한 경우
    if condition:
        raise CustomException("Something went wrong")

    # 예외가 발생하지 않은 경우 다음 동작 수행
    ...
except CustomException as e:
    # 사용자 정의 예외 처리
    ...

결론

위에서는 웹 자동화 테스트에서 예외를 처리하는 몇 가지 방법을 살펴보았습니다. try-except 문을 사용하여 예외를 처리하거나, assert 문을 사용하여 조건이 만족되지 않은 경우 예외 처리를 할 수 있습니다. 또한, 사용자 정의 예외를 만들어 더욱 세부적인 예외 처리를 수행할 수도 있습니다. 이러한 예외 처리를 통해 웹 자동화 테스트를 더욱 안정적이고 신뢰할 수 있도록 만들 수 있습니다.

참고 자료