Selenium vs Playwright vs pytest|Python 테스트 자동화 도구 선택 가이드

테스트 자동화의 대표적인 도구인 Selenium・Playwright・pytest는 각각 특기하는 영역과 특징이 다르기 때문에, 목적에 맞게 선택하는 것이 효과적인 자동화의 핵심입니다.

📌 이런 분께 추천합니다

  • Selenium과 Playwright 중 어느 것을 사용해야 할지 고민하는 분
  • pytest가 E2E 도구와 무엇이 다른지 알고 싶은 분
  • Python으로 테스트 자동화를 시작하고 싶은 QA 엔지니어·개발자
  • 팀에 도구를 도입할 때 근거를 가지고 선정하고 싶은 분

✅ 이 글을 읽으면 알 수 있는 것

  • Selenium·Playwright·pytest 각각의 특징과 특기하는 것
  • 3가지 도구의 차이를 일람표로 비교
  • 어떤 도구를 어떤 상황에서 사용해야 하는가
  • 실무에서 자주 사용되는 조합 패턴

👤

글쓴이 소개:QA 엔지니어로서 Selenium·Playwright·pytest를 실무에서 사용해 온 경험을 바탕으로 해설합니다. 3가지 도구 모두를 실제 프로젝트에서 사용한 경험에 의한 비교입니다. GitHub에서 코드 공개 중。

📌 이 글의 결론

Selenium은 브라우저 호환성의 높음과 실적이 강점. Playwright는 모던하고 고속·기능이 풍부. pytest는 Python 테스트 관리의 기반. 실무에서는 「pytest + Selenium 또는 Playwright」의 조합이 가장 많이 사용됩니다.

「Selenium과 Playwright 중 어느 것을 사용하면 좋을까?」「pytest는 Selenium과 무엇이 다른 건가?」——테스트 자동화를 시작할 때 많은 분들이 이 의문에 부딪힙니다.

3가지 도구는 각각 역할이 다릅니다. Selenium과 Playwright는 브라우저 자동화 도구, pytest는 테스트 실행·관리 프레임워크입니다. 각각의 특징을 올바르게 이해함으로써 프로젝트에 최적의 선택을 할 수 있게 됩니다.


3가지 도구 비교 빠른 참조표

먼저 3가지 도구의 위치를 일람으로 확인해 봅시다.

도구 종별 특기하는 것 속도 학습 비용
🌐 Selenium 브라우저 자동화 크로스 브라우저·실적 풍부 🏃 중간 정도 중간 정도
🎭 Playwright 브라우저 자동화 고속·녹화·자동 대기 ⚡ 고속 낮음
🧪 pytest 테스트 관리 프레임워크 단위·API·테스트 관리 전반 ⚡ 고속 낮음
💡 중요한 포인트: pytest는 Selenium·Playwright와 경쟁하는 도구가 아닙니다. pytest를 테스트 관리의 기반으로 하고, 그 위에서 Selenium이나 Playwright를 실행하는 것이 실무에서의 표준적인 구성입니다.

① 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()
💡 실무 Tip: Selenium에서는 대기 처리가 핵심입니다. 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 playwrightplaywright 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()
💡 실무 Tip: Playwright는 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
💡 실무 Tip: pytest의 fixture 기능은 매우 강력합니다. 브라우저의 기동·종료와 테스트 데이터 준비 등, 테스트의 전후 처리를 한 곳에서 관리할 수 있습니다. Selenium과 조합하면 「테스트 시작 시 브라우저를 기동, 종료 시 자동으로 닫는다」를 자동화할 수 있습니다.

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 테스트

💡 이 블로그에서의 구성: 이 블로그의 샘플 코드는 모두 Python + Selenium 또는 Playwright + pytest의 조합으로 구현하고 있습니다. GitHub의 코드도 동일한 구성입니다.

정리

이 글에서는 테스트 자동화의 대표 도구 「Selenium·Playwright·pytest」의 특징과 사용 구분을 해설했습니다.

📋 이 글의 정리

  • Selenium:역사가 길고 정보량이 풍부. 크로스 브라우저 대응◎. 대기 처리를 직접 작성할 필요 있음
  • Playwright:모던하고 고속. Auto-wait·녹화 등 기능이 충실. 신규 프로젝트에 추천
  • pytest:브라우저 조작이 아니라 테스트의 관리·실행 프레임워크. Selenium이나 Playwright와 조합하여 사용
  • 실무의 정석은 「pytest + Selenium」또는「pytest + Playwright」의 조합
  • 신규 프로젝트라면 「pytest + Playwright」가 현재의 베스트 프랙티스

「어느 것이 좋은가」보다 「우선 사용해 본다」가 중요합니다. 어느 도구에서 시작해도 테스트 자동화의 본질적인 스킬은 몸에 익힐 수 있습니다.

실제 구현을 보고 싶은 분은 먼저 Playwright로 E2E 테스트를 자동화하는 방법(초보자용) 부터 읽어보세요👇

タイトルとURLをコピーしました