테스트를 작성할 때, 코드의 일부분을 여러 번 반복해야 하는 경우가 있습니다. 이는 특정한 동작이 항상 동일한 결과를 반환하는지 확인하기 위해 필요한 경우입니다. 이러한 테스트의 반복성을 보장하기 위해 pytest
라는 파이썬 테스트 프레임워크를 사용할 수 있습니다.
pytest
란?
pytest
는 파이썬에서 자동화된 테스트를 작성할 수 있는 강력한 도구입니다. unittest
를 비롯한 다른 테스트 프레임워크보다 쉽고 유연하며 확장 가능한 기능을 제공합니다. pytest
는 코드의 일부분을 반복해서 실행하고, 예상 출력과 실제 출력을 비교하며, 테스트 결과를 자세하게 보고하는 등 다양한 기능을 제공합니다.
테스트의 반복성 보장하기
pytest
에서는 테스트의 반복성을 보장하기 위해 몇 가지 기능을 제공합니다.
@pytest.mark.parametrize
특정한 테스트 케이스를 여러 번 실행해야 하는 경우, @pytest.mark.parametrize
데코레이터를 사용하여 테스트에 인수를 전달할 수 있습니다. 이를 통해 동일한 테스트 코드를 여러 값으로 실행하면서 결과를 확인할 수 있습니다.
예를 들어, 아래와 같이 add
함수에 대한 테스트를 작성하고 싶다고 가정해 보겠습니다.
def add(a, b):
return a + b
이 함수를 테스트하기 위해 pytest
를 사용하려면 다음과 같은 테스트 함수를 작성할 수 있습니다.
import pytest
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(10, 20, 30)
])
def test_add(a, b, expected):
assert add(a, b) == expected
위의 코드에서 @pytest.mark.parametrize
데코레이터는 a
, b
, expected
와 같은 인수를 전달하고, 이들 값의 조합으로 테스트 함수를 여러 번 실행합니다. 이를 통해 add
함수의 결과가 예상한 대로 반환되는지 확인할 수 있습니다.
@pytest.mark.repeat
@pytest.mark.repeat
데코레이터를 사용하면, 특정 테스트 함수를 여러 번 반복해서 실행할 수 있습니다. 이를 통해 특정한 테스트 시나리오를 여러 번 반복하여 코드의 반복성을 보장할 수 있습니다.
예를 들어, 다음과 같이 divide
함수에 대한 테스트를 작성하고 싶다고 가정해 보겠습니다.
def divide(a, b):
return a / b
이 함수를 반복적으로 테스트하기 위해 pytest
를 사용하려면 다음과 같은 테스트 함수를 작성할 수 있습니다.
import pytest
@pytest.mark.repeat(5)
def test_divide():
assert divide(10, 2) == 5
위의 코드에서 @pytest.mark.repeat(5)
데코레이터는 test_divide
함수를 5번 반복해서 실행합니다. 이를 통해 divide
함수의 결과가 항상 5가 되는지 확인할 수 있습니다.
결론
pytest
를 사용하면 테스트의 반복성을 보장하기 위해 간단하고 유연한 기능을 활용할 수 있습니다. @pytest.mark.parametrize
데코레이터를 사용하여 여러 값의 조합으로 테스트를 실행하고, @pytest.mark.repeat
데코레이터를 사용하여 동일한 테스트를 여러 번 실행할 수 있습니다. 이를 통해 코드의 일관성과 신뢰성을 높일 수 있습니다.