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 조합을 추천함.
추천 이유
- 파이썬 자체가 쉽고 문법이 직관적임
- 첫 프로그래밍 언어, 자동화 입문에 매우 적합함
- pytest는 복잡한 설정 없이 바로 사용 가능
- 간단한 설치(pip install pytest), 한 줄 테스트 코드로 시작 가능
- 코드 구조가 심플하고, 데코레이터만 익히면 반복/그룹/조건 테스트 쉽게 구현 가능
- 테스트 함수 앞에 @pytest.mark.*만 붙이면 됨
- 테스트 코드, 예제, 블로그 등 한글 자료가 매우 풍부함
- 오류 해결, 실전 팁 검색이 쉬움
- 실행도 쉽고, 리포트/자동화 확장도 쉬움
- 커맨드라인에서 pytest만 입력하면 테스트 자동 실행
- 나중에 익숙해지면 확장(병렬, 리포트, 커버리지 등)도 플러그인으로 간단하게 적용
반응형
'Web.IT.Mobile > QA 자동화' 카테고리의 다른 글
pytest plug-ins (0) | 2025.07.20 |
---|---|
멀티 브라우저/멀티 환경 파라미터라이즈(Parametrize) (0) | 2025.07.20 |
pytest 입문 로드맵 (0) | 2025.07.20 |
셀레니움 모바일환경 테스트 방법 (0) | 2025.07.19 |
셀레니움으로 구현 가능한/불가능한 동작 (0) | 2025.07.19 |
Software Testing& Quality Report (소프트웨어 테스팅 & 품질 리포트) - 3RD EDITION by Testrail 테스트레일 (0) | 2024.05.23 |
댓글