PHpullh
학습 라이브러리/Python/파라미터화 테스트

PYTHON · 테스트

파라미터화 테스트

@pytest.mark.parametrize로 여러 입력값에 대해 같은 테스트를 반복 실행합니다.

테스트중급parametrize파라미터pytest테스트

핵심 설명

@pytest.mark.parametrize로 여러 입력값에 대해 같은 테스트를 반복 실행합니다.

Python code

import pytest

# 기본 파라미터화
@pytest.mark.parametrize("input,expected", [
    (1, 1),
    (2, 4),
    (3, 9),
    (-1, 1),
    (0, 0),
])
def test_square(input, expected):
    assert input ** 2 == expected

# 여러 파라미터 조합
@pytest.mark.parametrize("a,b,result", [
    (1, 2, 3),
    (0, 0, 0),
    (-1, 1, 0),
    (100, 200, 300),
])
def test_add(a, b, result):
    assert a + b == result

# ID 지정으로 가독성 향상
@pytest.mark.parametrize("text,expected", [
    pytest.param("hello", "HELLO", id="basic"),
    pytest.param("", "", id="empty"),
    pytest.param("Hello World", "HELLO WORLD", id="mixed"),
], ids=str)
def test_upper(text, expected):
    assert text.upper() == expected

# 다중 parametrize (데카르트 곱)
@pytest.mark.parametrize("x", [1, 2])
@pytest.mark.parametrize("y", [10, 20])
def test_multiply(x, y):
    assert x * y > 0  # 4개 조합 테스트

# 조건부 건너뛰기
@pytest.mark.parametrize("n", [
    1,
    pytest.param(2, marks=pytest.mark.skip(reason="알려진 버그")),
    3,
])
def test_with_skip(n):
    assert n > 0

print("파라미터화 테스트 패턴 준비 완료")

학습 팁

pytest.param(..., id="설명")으로 각 테스트 케이스에 설명을 추가하면 실패 시 원인 파악이 쉽습니다.

주의할 점

파라미터 조합이 너무 많으면 테스트 시간이 폭발적으로 증가합니다. 핵심 경계값과 대표값만 선택하세요.

자주 묻는 질문

파라미터화 테스트란 무엇인가요?

@pytest.mark.parametrize 로 여러 입력값에 대해 같은 테스트를 반복 실행합니다.

파라미터화 테스트 학습 시 주의할 점은 무엇인가요?

파라미터 조합이 너무 많으면 테스트 시간이 폭발적으로 증가합니다. 핵심 경계값과 대표값만 선택하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.