[파이썬] pytest Hypothesis와 함께 사용하기

소개

pytest는 파이썬으로 작성된 테스트 프레임워크로, 모듈화된 테스트 케이스 작성과 테스트 실행을 위한 강력한 기능을 제공합니다. Hypothesis는 pytest와 호환되는 파이썬 라이브러리로, 임의의 입력을 생성해 테스트 케이스를 자동으로 생성하고 검증하는 기능을 제공합니다. pytest와 Hypothesis를 함께 사용하면 보다 간결하고 효과적인 테스트 케이스를 작성할 수 있습니다.

pytest 설치

pytest를 사용하기 위해서는 먼저 pytest를 설치해야 합니다. 다음 명령어를 사용하여 pytest를 설치할 수 있습니다.

pip install pytest

또한, Hypothesis를 함께 사용하기 위해서도 Hypothesis를 설치해야 합니다. 다음 명령어를 사용하여 Hypothesis를 설치할 수 있습니다.

pip install hypothesis

pytest 테스트 작성

pytest를 사용하여 테스트를 작성할 때에는 테스트 함수에 test_로 시작하는 함수명을 사용해야 합니다. 이렇게 하는 것은 pytest가 자동으로 테스트 함수를 인식하여 실행할 수 있도록 하기 위함입니다. 아래는 간단한 예시입니다.

import pytest

def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5
    assert add(5, 7) == 12

Hypothesis를 이용한 테스트 자동화

Hypothesis를 사용하여 테스트를 자동화할 수 있습니다. Hypothesis를 import하고 @given 데코레이터를 사용하여 테스트 함수에 입력을 생성하는 로직을 추가합니다. 아래는 Hypothesis를 사용한 예시입니다.

import pytest
from hypothesis import given
from hypothesis.strategies import integers

def add(a, b):
    return a + b

@given(a=integers(), b=integers())
def test_add(a, b):
    assert add(a, b) == a + b

Hypothesis는 integers, booleans, lists, dictionaries 등 다양한 데이터 타입에 대한 입력 생성기를 제공합니다. @given 데코레이터로 생성된 입력을 사용하여 테스트 함수를 실행하게 됩니다. Hypothesis는 입력을 처음에는 작은 값에서 시작해서 점진적으로 간격을 넓혀가며 다양한 입력을 생성하므로, 대부분의 예외상황을 테스트할 수 있습니다.

pytest 실행

pytest의 실행은 간단합니다. 터미널에서 다음 명령어를 실행하면 pytest가 실행되어 현재 디렉토리 자체와 하위 디렉토리에 있는 모든 테스트를 찾아 실행합니다.

pytest

특정 파일이나 디렉토리만 테스트하려면 해당 파일 또는 디렉토리 경로를 명령어에 추가하여 실행하면 됩니다.

결론

pytest와 Hypothesis는 파이썬 개발에서 테스트 작성을 더욱 효율적으로 만들어주는 강력한 도구입니다. pytest는 간결한 문법과 유연한 기능을 제공하며, Hypothesis는 임의의 입력을 생성하여 자동으로 다양한 테스트 케이스를 생성하고 검증해줍니다. pytest와 Hypothesis를 함께 사용하면 보다 신뢰할 수 있는 코드를 작성할 수 있습니다.