본문 바로가기
Study/Python

Python에서 Appium 테스트 코드 재시도 로직

by Zeromk2 2024. 10. 3.
728x90

Playwright에는 실패시 해당 코드를 재시도할 수 있는 설정이 자체적으로 있다고 합니다. 

const config = { 
  retries: 2 ,   // 이렇게 하면 실패한 케이스를 2번 다시 시도합니다
 };

 

E2E 테스트가 수행되는 시나리오는 '수행' 이 목적이지 '성공' 이 목적이 아니기 때문에 재시도 로직이 필요없었지만

각 화면별 로딩 시간을 측정하는 자동화 코드는 '성공' 이 목적이기 때문에 성공할 때 까지 재시도를 해야 하는 상황이였습니다.

오호 이거 Appium에 적용하면 좋겠군!!

ChatGPT 아버지!

 

그런데 돌아온 답변은

응 아니야 안돼 돌아가

 

힝 속았지? 내가 만들어 주겠다구웃

 

import time
from appium import webdriver
from selenium.common.exceptions import WebDriverException

# 재시도 로직을 포함한 함수
def run_test_with_retry(test_function, retries=2, delay=2):
    attempt = 0
    while attempt <= retries:
        try:
            test_function()
            print("Test passed!")
            return
        except WebDriverException as e:
            print(f"Test failed on attempt {attempt + 1}: {e}")
            if attempt == retries:
                raise e  # 최대 재시도 횟수 도달 시 에러를 다시 발생
            attempt += 1
            time.sleep(delay)  # 재시도 전에 대기 시간 추가

# 테스트 함수
def test_function():

    # 간단한 테스트 시나리오 (예: 특정 버튼 클릭)
    button = driver.find_element_by_accessibility_id('some_button')
    button.click()

    # 테스트 종료
    driver.quit()

# 실행
run_test_with_retry(test_function, retries=2, delay=3)

 

이렇게 수행하면 된다고 합니다.

저는 요긴하게 사용할 수 있을 것 같았!... 지만 이것만 수행할 별도 파일이 있는 구조가 아니라서 저는 사용을 안하게 되네요.

결국 for문으로 반복했고 실패하면 재시도 하고 성공하면 return해서 종료되도록 했습니다. 

Playwright 재시도 기능 좋군요!

댓글