본문 바로가기
Web.IT.Mobile/QA 자동화

TestNG vs pytest 기능 차이

by sshongs 2025. 7. 20.

TestNG(Java 기반)와 pytest(Python 기반)는 각각의 언어 생태계에서 가장 널리 쓰이는 테스트 프레임워크임.
둘 다 자동화/단위테스트/통합테스트에 모두 활용 가능하지만, 기능상 차이와 특징이 존재

항목  TestNG (Java) pytest (Python)
지원 언어 Java Python
어노테이션 다양한 어노테이션 제공 (@Test, @Before*, 등) 데코레이터 방식 사용 (@pytest.fixture, @pytest.mark.* 등)
테스트 그룹화 groups 속성으로 다양한 테스트 그룹 지정 가능 @pytest.mark.<label>로 테스트 분류 및 선택 실행
의존성/순서 테스트간 의존성, 실행순서 지정 (dependsOnMethods, priority) 기본적으로 독립 실행, 순서 지정은 플러그인 필요
병렬 실행 내장 병렬실행 지원 (testng.xml 또는 파라미터) pytest-xdist 플러그인으로 병렬 실행 가능
데이터 기반 테스트 @DataProvider로 데이터 주입 반복 테스트 지원 @pytest.mark.parametrize로 간단하게 반복 테스트
설정파일 testng.xml로 상세 설정, 실행관리 pytest.ini, pyproject.toml로 기본 옵션 관리 가능
리포트/로깅 기본 HTML, XML 리포트 제공 기본 텍스트 리포트, 플러그인(ALLURE 등)으로 확장
실행 방법 IDE, Maven/Gradle, testng.xml 등 다양 CLI 실행 (pytest 명령), 옵션 다양
확장성 JUnit, Selenium, Appium 등과 연동 많음 rich 플러그인 생태계(coverage, xdist, allure 등)
커뮤니티/자료 오랜 역사, 공식 문서, Stack Overflow 등 많음 공식 문서, 예제, 플러그인 자료 풍부

*어노테이션 : 
- 코드(클래스, 메서드, 변수 등)에 메타데이터(추가 정보)를 제공하는 문법적 요소
- 코드의 의미나 동작 방식을 명확하게 지정하거나 자동화할 때 사용

 

  • Java/C#: 주로 ‘어노테이션(annotation)’ 이라고 부름 (@Test)
  • Python: ‘데코레이터(decorator)’라고 부르지만 역할이 거의 비슷함 (@pytest.mark.* 등)

 

 

예시 비교

1. 데이터 기반 반복 테스트

TestNG

@DataProvider(name = "data")
public Object[][] testData() {
    return new Object[][] { {"홍길동"}, {"철수"} };
}

@Test(dataProvider = "data")
public void testName(String name) {
    System.out.println(name);
}

pytest

import pytest

@pytest.mark.parametrize("name", ["홍길동", "철수"])
def test_name(name):
    print(name)

2. 병렬 실행

  • TestNG : 내장 옵션으로 testng.xml이나 어노테이션에 parallel="methods" 지정
  • pytest : pytest-xdist 플러그인 설치 후 pytest -n 4와 같이 실행

3. 그룹핑/선택실행

  • TestNG : testng.xml에서 <groups>로 실행 그룹 지정
@Test(groups = {"smoke"})
public void testA() { ... }
  • pytest : pytest -m smoke로 해당 그룹만 실행
@pytest.mark.smoke
def test_a(): ...

한줄 결론

  • TestNG는 Java 진영에서 강력한 어노테이션, xml 기반 구성, 내장 병렬, 리포트에 강점이 있음.
  • pytest는 Python 진영에서 간단한 문법, 플러그인 기반 확장성, 손쉬운 데이터 기반 테스트가 강점임.

개발 지식이 부족한 상태라면, 파이썬 + pytest 조합을 추천함.

추천 이유

  1. 파이썬 자체가 쉽고 문법이 직관적임
    • 첫 프로그래밍 언어, 자동화 입문에 매우 적합함
  2. pytest는 복잡한 설정 없이 바로 사용 가능
    • 간단한 설치(pip install pytest), 한 줄 테스트 코드로 시작 가능
  3. 코드 구조가 심플하고, 데코레이터만 익히면 반복/그룹/조건 테스트 쉽게 구현 가능
    • 테스트 함수 앞에 @pytest.mark.*만 붙이면 됨
  4. 테스트 코드, 예제, 블로그 등 한글 자료가 매우 풍부함
    • 오류 해결, 실전 팁 검색이 쉬움
  5. 실행도 쉽고, 리포트/자동화 확장도 쉬움
    • 커맨드라인에서 pytest만 입력하면 테스트 자동 실행
    • 나중에 익숙해지면 확장(병렬, 리포트, 커버리지 등)도 플러그인으로 간단하게 적용
반응형

댓글