Hypothesis


  • 파이썬 기반의 속성 기반 테스트 프레임워크이다.

  • 속성 기반의 테스트란, 간단하게 예를 들어서 입력값이 정수라고 하면 무작위의 정수값을 테스트 프레임워크에서 대입하는 것이다.

  • 일반적인 단위 테스트는 입력값에 따른 결과값을 정해놓고 테스트를 하지만, 속성 기반 테스트는 테스트 작성자가 놓치고 있는 입력값에 대해서 테스트를 할 수 있다.

사용 예제


def get_min_count_with_two_and_three(num):
    if num == 2 or num == 3:
            return 1
        if num == 4:
            return 2

        # 3으로 나눌 수 있는 경우 몫을 반환한다.
        if num % 3 == 0:
            return num // 3
        # 만약 3으로 나눌 수 없는 경우
        a = num // 3  # 몫을 구한다.
            while a > 0:
                    _num = num - (3 * a)
        # 2로 나눌 수 있는지 확인한다.
        if _num % 2 == 0:
            b = _num // 2
            return a + b
        a -= 1
    return -1
  • 예를 들어서 임의의 숫자 num 이 입력값으로 들어왔을 때 2x + 3y = num 을 만족하는 최소 x, y를 구하는 함수가 위에 있다.
from unittest import TestCase

from hypothesis import given
from hypothesis.strategies import integers

from main import get_min_count_with_two_and_three


class Test(TestCase):
        @given(num=integers(min_value=1, max_value=1000))
def test_get_min_count_with_two_and_three(self, num):
         print(num, f"result: {get_min_count_with_two_and_three(num)}")
  • 위와 같이 테스트하고자 하는 함수 위에 @given 데코레이터를 사용하여 입력값의 범위와 타입을 지정하면 랜덤으로 범위에 있는 타입과 값이 들어가게 된다.

  • 나는 주로 코딩 테스트의 입력값을 넣어봐서 내가 고려하지 못한 부분이 있는지를 확인한다.

참고 문헌

>> Home