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
데코레이터를 사용하여 입력값의 범위와 타입을 지정하면 랜덤으로 범위에 있는 타입과 값이 들어가게 된다. -
나는 주로 코딩 테스트의 입력값을 넣어봐서 내가 고려하지 못한 부분이 있는지를 확인한다.