Playwright에는 실패시 해당 코드를 재시도할 수 있는 설정이 자체적으로 있다고 합니다.
const config = {
retries: 2 , // 이렇게 하면 실패한 케이스를 2번 다시 시도합니다
};
E2E 테스트가 수행되는 시나리오는 '수행' 이 목적이지 '성공' 이 목적이 아니기 때문에 재시도 로직이 필요없었지만
각 화면별 로딩 시간을 측정하는 자동화 코드는 '성공' 이 목적이기 때문에 성공할 때 까지 재시도를 해야 하는 상황이였습니다.
오호 이거 Appium에 적용하면 좋겠군!!
그런데 돌아온 답변은
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 재시도 기능 좋군요!
728x90
'Study > Python' 카테고리의 다른 글
Python으로 API 테스트 가능한 라이브러리 비교 (Requests vs Httpx) (2) | 2024.10.30 |
---|---|
sys.argv 로 명령줄 인수 사용하기 (0) | 2023.09.27 |
technology ebooks. 다양한 언어와 기술 전자책이 있는 웹사이트 공유 (0) | 2023.05.19 |
Slack files.upload로 이미지 전송하기 (0) | 2022.03.09 |
Slack Block Kit 을 사용한 메시지 전송 (0) | 2022.03.09 |
댓글