테스트 자동화의 대표적인 도구인 Selenium・Playwright・pytest는 각각 특기하는 영역과 특징이 다르기 때문에, 목적에 맞게 선택하는 것이 효과적인 자동화의 핵심입니다.
📌 이런 분께 추천합니다
- Selenium과 Playwright 중 어느 것을 사용해야 할지 고민하는 분
- pytest가 E2E 도구와 무엇이 다른지 알고 싶은 분
- Python으로 테스트 자동화를 시작하고 싶은 QA 엔지니어·개발자
- 팀에 도구를 도입할 때 근거를 가지고 선정하고 싶은 분
✅ 이 글을 읽으면 알 수 있는 것
- Selenium·Playwright·pytest 각각의 특징과 특기하는 것
- 3가지 도구의 차이를 일람표로 비교
- 어떤 도구를 어떤 상황에서 사용해야 하는가
- 실무에서 자주 사용되는 조합 패턴
📌 이 글의 결론
Selenium은 브라우저 호환성의 높음과 실적이 강점. Playwright는 모던하고 고속·기능이 풍부. pytest는 Python 테스트 관리의 기반. 실무에서는 「pytest + Selenium 또는 Playwright」의 조합이 가장 많이 사용됩니다.
「Selenium과 Playwright 중 어느 것을 사용하면 좋을까?」「pytest는 Selenium과 무엇이 다른 건가?」——테스트 자동화를 시작할 때 많은 분들이 이 의문에 부딪힙니다.
3가지 도구는 각각 역할이 다릅니다. Selenium과 Playwright는 브라우저 자동화 도구, pytest는 테스트 실행·관리 프레임워크입니다. 각각의 특징을 올바르게 이해함으로써 프로젝트에 최적의 선택을 할 수 있게 됩니다.
3가지 도구 비교 빠른 참조표
먼저 3가지 도구의 위치를 일람으로 확인해 봅시다.
| 도구 | 종별 | 특기하는 것 | 속도 | 학습 비용 |
|---|---|---|---|---|
| 🌐 Selenium | 브라우저 자동화 | 크로스 브라우저·실적 풍부 | 🏃 중간 정도 | 중간 정도 |
| 🎭 Playwright | 브라우저 자동화 | 고속·녹화·자동 대기 | ⚡ 고속 | 낮음 |
| 🧪 pytest | 테스트 관리 프레임워크 | 단위·API·테스트 관리 전반 | ⚡ 고속 | 낮음 |
① Selenium
어떤 도구인가
- 2004년부터 이어지는 브라우저 자동화의 정석 도구. 실적과 정보량이 압도적
- Chrome·Firefox·Safari·Edge 등 복수 브라우저에 대응한 크로스 브라우저 테스트가 특기
- Python·Java·JavaScript·C# 등 다언어 대응으로 기존 프로젝트에 도입하기 쉽다
Selenium은 브라우저를 실제로 조작하여 웹 앱을 테스트하는 도구입니다. WebDriver를 통해 브라우저를 제어하고, 클릭·입력·화면 전환 등의 조작을 자동화합니다. 긴 역사를 가지고 있어 인터넷상의 정보와 샘플 코드가 풍부하여, 막혔을 때 해결책을 찾기 쉬운 것이 큰 강점입니다.
✅ Selenium이 적합한 케이스
- 복수 브라우저에서의 동작 확인이 필요한 경우
- Java·C# 등 비Python 팀인 경우
- 기존 Selenium 테스트를 이어받는 경우
- 정보량의 많음을 중시하는 경우
⚠️ 주의점
- 대기 처리(WebDriverWait)를 직접 작성해야 함
- Playwright보다 실행 속도가 약간 느림
- 스크린샷·동영상 녹화 설정이 약간 번거로움
| 대응 언어 | Python / Java / JavaScript / C# / Ruby |
| 대응 브라우저 | Chrome / Firefox / Safari / Edge(크로스 브라우저 대응◎) |
| 설치 | pip install selenium |
| GitHub 스타 수 | 약 31,000 ⭐(2026년 3월 현재) |
▼ Selenium 코드 샘플(Python)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://example.com/login")
# 요소를 대기한 후 조작
wait = WebDriverWait(driver, 10)
email = wait.until(EC.presence_of_element_located((By.ID, "email")))
email.send_keys("test@example.com")
driver.find_element(By.ID, "password").send_keys("password123")
driver.find_element(By.ID, "submit").click()
driver.quit()
time.sleep()이 아니라 WebDriverWait을 사용함으로써 페이지 로딩 완료를 확인하고 나서 조작할 수 있습니다. 이것만으로 불안정한 테스트의 대부분이 해소됩니다.
② Playwright
어떤 도구인가
- Microsoft가 개발한 모던한 브라우저 자동화 도구(2020년 릴리스)
- 자동 대기(Auto-wait)기능으로 대기 처리를 직접 작성할 필요가 없다
- 스크린샷·동영상 녹화·트레이스 뷰어가 표준 탑재되어 에비던스 수집이 간단
Playwright는 Selenium의 과제를 해결하기 위해 설계된 모던한 브라우저 자동화 도구입니다. 요소가 발견될 때까지 자동으로 대기해 주는 Auto-wait 기능으로, Selenium에서 필요했던 대기 처리 기술이 불필요해집니다. 실행 속도도 빠르고, 동영상 녹화와 네트워크 감청 등 고급 기능도 표준으로 갖추고 있습니다.
✅ Playwright가 적합한 케이스
- 신규 프로젝트에서 E2E를 구축하는 경우
- 스크린샷·동영상 녹화가 필요한 경우
- 테스트의 안정성을 최우선으로 하고 싶은 경우
- Python / JavaScript / TypeScript 팀인 경우
⚠️ 주의점
- 2020년 릴리스로 Selenium보다 정보량이 약간 적다
- Java·C#의 지원은 Selenium보다 한정적
- 독자적인 브라우저 바이너리를 사용하여 초회 설치가 약간 무겁다
| 대응 언어 | Python / JavaScript / TypeScript / Java / C# |
| 대응 브라우저 | Chromium / Firefox / WebKit(Safari 상당) |
| 설치 | pip install playwright → playwright install |
| GitHub 스타 수 | 약 68,000 ⭐(2026년 3월 현재·급성장 중) |
▼ Playwright 코드 샘플(Python)
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com/login")
# Auto-wait: 자동으로 요소를 대기하고 나서 조작
page.fill("#email", "test@example.com")
page.fill("#password", "password123")
page.click("#submit")
# 스크린샷도 1줄로 저장
page.screenshot(path="login_result.png")
browser.close()
page.fill()이나 page.click()이 자동으로 요소의 표시를 대기하고 나서 실행해 줍니다. Selenium에서 고생하던 「요소를 찾을 수 없음」 에러가 대폭 줄어듭니다. 또한 page.screenshot() 한 줄로 스크린샷을 저장할 수 있는 것도 편리합니다.
③ pytest
어떤 도구인가
- Python의 테스트를 실행·관리하기 위한 프레임워크
- 단위 테스트·API 테스트·통합 테스트의 관리 기반으로 사용된다
- Selenium이나 Playwright와 조합하여 E2E 테스트의 관리에도 사용할 수 있다
pytest는 Selenium이나 Playwright 같은 브라우저 조작 도구가 아니라, 테스트를 관리·실행하기 위한 프레임워크입니다. 테스트의 검출·실행·결과 리포트를 담당합니다. assert문으로 간단하게 검증할 수 있고, fixture라는 구조로 테스트의 전처리·후처리를 공통화할 수 있습니다.
✅ pytest가 적합한 케이스
- Python의 단위 테스트·API 테스트 관리
- 테스트를 CI/CD에 통합하는 경우
- 복수의 테스트를 모아서 실행·리포트화
- Selenium·Playwright의 테스트를 관리하고 싶은 경우
⚠️ 주의점
- 브라우저 조작 기능은 갖고 있지 않다
- E2E 테스트에는 별도로 Selenium 또는 Playwright가 필요
- Python 전용(다른 언어에는 별도 프레임워크를 사용)
| 대응 언어 | Python 전용 |
| 주요 용도 | 단위 테스트 / API 테스트 / 테스트 관리 / CI 연계 |
| 설치 | pip install pytest |
| GitHub 스타 수 | 약 12,000 ⭐(2026년 3월 현재) |
▼ pytest 코드 샘플
import pytest
import requests
# API 테스트 예시
def test_get_user():
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
assert response.status_code == 200
assert response.json()["name"] == "Leanne Graham"
# fixture로 공통 처리를 정의
@pytest.fixture
def base_url():
return "https://jsonplaceholder.typicode.com"
def test_post_created(base_url):
response = requests.post(f"{base_url}/posts", json={"title": "test"})
assert response.status_code == 201
Selenium vs Playwright 상세 비교
E2E 도구로서 경쟁하는 Selenium과 Playwright의 차이를 더 자세히 비교합니다.
| 비교 항목 | 🌐 Selenium | 🎭 Playwright |
|---|---|---|
| 릴리스 연도 | 2004년(역사가 길다) | 2020년(모던) |
| 대기 처리 | 직접 작성 필요 | Auto-wait(자동) |
| 실행 속도 | 약간 느림 | 고속 |
| 스크린샷 | 설정 필요 | 1줄로 저장 |
| 동영상 녹화 | 표준 비대응 | 표준 탑재 |
| 정보·실적 | 압도적으로 풍부 | 급증 중 |
| 크로스 브라우저 | ◎(실제 브라우저 대응) | ◎(Chromium/Firefox/WebKit) |
🤔 어느 것을 선택해야 하는가?
| Selenium을 선택한다면 | 기존 프로젝트의 인수인계 / Java·C# 팀 / 정보량을 중시하는 경우 |
| Playwright를 선택한다면 | 신규 프로젝트 / Python·JS 팀 / 안정성·속도를 중시하는 경우 |
실무에서 자주 사용되는 조합 패턴
3가지 도구는 단독이 아니라 조합해서 사용하는 것이 실무의 표준입니다. 대표적인 패턴을 소개합니다.
🌐 패턴①
pytest + Selenium
기존 Selenium 테스트를 가진 팀의 정석 구성. pytest가 테스트를 관리·실행하고, Selenium이 브라우저를 조작한다.
pytest → 테스트 관리
selenium → 브라우저 조작
requests → API 테스트
🎭 패턴②
pytest + Playwright
신규 프로젝트에서의 현재 베스트 프랙티스. Playwright의 안정성·고속성과 pytest의 관리 기능을 조합한 최강 구성.
pytest → 테스트 관리
playwright → 브라우저 조작
requests → API 테스트
📖 각 도구의 구현 예시는 여기
정리
이 글에서는 테스트 자동화의 대표 도구 「Selenium·Playwright·pytest」의 특징과 사용 구분을 해설했습니다.
📋 이 글의 정리
- Selenium:역사가 길고 정보량이 풍부. 크로스 브라우저 대응◎. 대기 처리를 직접 작성할 필요 있음
- Playwright:모던하고 고속. Auto-wait·녹화 등 기능이 충실. 신규 프로젝트에 추천
- pytest:브라우저 조작이 아니라 테스트의 관리·실행 프레임워크. Selenium이나 Playwright와 조합하여 사용
- 실무의 정석은 「pytest + Selenium」또는「pytest + Playwright」의 조합
- 신규 프로젝트라면 「pytest + Playwright」가 현재의 베스트 프랙티스
「어느 것이 좋은가」보다 「우선 사용해 본다」가 중요합니다. 어느 도구에서 시작해도 테스트 자동화의 본질적인 스킬은 몸에 익힐 수 있습니다.
실제 구현을 보고 싶은 분은 먼저 Playwright로 E2E 테스트를 자동화하는 방법(초보자용) 부터 읽어보세요👇
