[파이썬] pytest 커스텀 assert 메서드 작성하기

pytest는 파이썬 테스트 프레임워크로서 강력하면서도 사용하기 쉬운 기능을 제공합니다. 하지만 때로는 기본적으로 제공되는 assert 문법으로 표현하기 어려운 특정한 검증 로직을 작성해야 할 때가 있습니다. 이러한 경우, pytest의 커스텀 assert 메서드를 작성하여 이를 해결할 수 있습니다.

커스텀 assert 메서드란?

커스텀 assert 메서드는 사용자가 원하는 방식으로 검증 로직을 작성할 수 있도록 해주는 기능입니다. 기본적으로 제공되는 assert 문법 외에 추가적인 기능이 필요한 경우에 사용할 수 있습니다.

pytest에서의 커스텀 assert 메서드 작성 방법

pytest에서 커스텀 assert 메서드를 작성하려면 다음과 같은 단계를 따를 수 있습니다.

  1. pytest 환경 설정 파일(conftest.py)을 작성합니다.
  2. 커스텀 assert 메서드를 정의합니다.
  3. pytest 환경 설정 파일에 정의한 메서드를 등록합니다.
# conftest.py

import pytest

@pytest.fixture(autouse=True)
def install_custom_asserts():
    pytest.assert_less_than = assert_less_than

def assert_less_than(value, limit):
    assert value < limit, f"Expected value ({value}) to be less than {limit}"

위의 코드에서는 assert_less_than이라는 커스텀 assert 메서드를 정의하였습니다. 이 메서드는 value가 limit보다 작은지를 검증하며, 작지 않을 경우에는 AssertionError를 발생시킵니다.

커스텀 assert 메서드 사용하기

이제 pytest 테스트 함수 내에서 커스텀 assert 메서드를 사용할 수 있습니다. 다음은 사용 예시입니다.

# test_custom_asserts.py

def test_custom_asserts():
    pytest.assert_less_than(5, 10)
    pytest.assert_less_than(10, 5)  # This will raise an AssertionError

위의 코드에서 첫 번째 assert는 성공적으로 통과하게 됩니다. 하지만 두 번째 assert는 value(10)가 limit(5)보다 크기 때문에 AssertionError가 발생하게 됩니다.

커스텀 assert 메서드를 사용하면 복잡한 검증 로직을 더욱 간결하고 의미있게 표현할 수 있습니다. pytest의 강력한 기능을 활용하여 쉽게 커스텀 assert 메서드를 작성해보세요!