테스트 코드는 소프트웨어 개발에서 중요한 부분입니다. 그렇기 때문에 테스트 코드를 작성할 때 가독성을 높이는 것은 매우 중요합니다. pytest는 파이썬의 인기있는 테스트 프레임워크 중 하나이며, 이 글에서는 pytest를 사용하여 가독성 높은 테스트 코드를 작성하는 방법을 알아보겠습니다.
1. 테스트 함수 네이밍
테스트 함수의 이름은 테스트를 진행하는 항목을 알기 쉽게 표현해야 합니다. snake_case를 사용하고, test_
로 시작하는 것을 권장합니다. 예를 들어, test_addition()
과 같은 네이밍이 좋은 예입니다.
def test_addition():
result = 2 + 3
assert result == 5
2. 설명적인 어서션 메시지
테스트 결과를 검증하는 단언문(assertion)은 가능한한 설명적으로 작성해야 합니다. 이는 테스트가 실패한 경우 어디서 어떤 문제가 발생했는지 파악하기 쉽게 도와줍니다. pytest에서는 assert
문을 사용하여 원하는 메시지를 추가할 수 있습니다.
def test_addition():
result = 2 + 3
assert result == 5, "2 + 3 should be 5"
3. 픽스쳐(fixture) 사용
pytest는 픽스쳐(fixture)라는 개념을 제공하여 테스트 실행 전후에 필요한 작업을 수행할 수 있습니다. 픽스쳐를 사용하면 테스트 코드를 간결하게 유지할 수 있고, 코드 재사용성을 높일 수 있습니다. 예를 들어, 테스트를 위해 데이터베이스 연결이 필요한 경우 다음과 같이 픽스쳐를 작성할 수 있습니다.
import pytest
@pytest.fixture
def database_connection():
# 데이터베이스 연결 설정
...
def test_database_query(database_connection):
# 데이터베이스 쿼리 수행 및 검증
...
4. 매개변수화된 테스트
pytest의 매개변수화된 테스트 기능을 사용하면 같은 테스트 함수를 여러 번 실행하면서 다양한 입력 값을 사용할 수 있습니다. 이렇게 함으로써 코드 커버리지를 높이고 테스트 코드의 양을 줄일 수 있습니다.
import pytest
@pytest.mark.parametrize("input1, input2, expected", [
(2, 3, 5),
(4, 5, 9),
(10, 20, 30),
])
def test_addition(input1, input2, expected):
result = input1 + input2
assert result == expected
5. 실패한 테스트로부터 성공하는 테스트 작성
pytest를 사용하면 실패한 테스트가 성공하는 테스트로 바뀔 때까지 작성 및 수정할 수 있습니다. 이 기능을 활용하여 먼저 실패하는 테스트를 작성하고, 이를 기반으로 테스트를 성공하게끔 코드를 작성하는 것이 좋습니다.
def test_division():
result = 10 / 2
assert result == 5
위의 테스트는 실패할 것입니다. 이후 작성된 코드는 다음과 같습니다.
def test_division():
result = 10 / 2
assert result == 5.0
결론
pytest를 사용하여 가독성 높은 테스트 코드를 작성할 수 있습니다. 테스트 함수 네이밍, 설명적인 어서션 메시지, 픽스쳐 사용, 매개변수화된 테스트, 실패한 테스트로부터 성공하는 테스트 작성 등을 활용하여 테스트 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.