[python] 단위 테스트에서의 입력 데이터 관리 방법

단위 테스트는 소프트웨어의 품질을 보장하는 데 중요한 요소입니다. 단위 테스트를 작성할 때 입력 데이터를 어떻게 관리해야 하는지에 대한 방법을 알아보겠습니다.

1. 하드 코딩된 입력 데이터

가장 간단한 방법은 테스트에 필요한 입력 데이터를 코드 내에 하드코딩하는 것입니다. 하지만 이러한 방식은 유지보수가 어렵고, 입력 데이터가 변경될 때마다 코드를 수정해야 합니다.

def calculate_total_price(quantity, unit_price):
    return quantity * unit_price
def test_calculate_total_price():
    assert calculate_total_price(5, 10) == 50
    assert calculate_total_price(10, 20) == 200

2. 테스트 케이스 클래스 활용

테스트 케이스 클래스를 활용하여 입력 데이터를 손쉽게 관리할 수 있습니다. unittest 모듈을 사용할 때는 setUp 메서드를 이용하여 입력 데이터를 초기화하고 테스트를 실행할 수 있습니다.

import unittest

class TestCalculateTotalPrice(unittest.TestCase):
    def setUp(self):
        self.quantity = 5
        self.unit_price = 10
        
    def test_total_price(self):
        self.assertEqual(calculate_total_price(self.quantity, self.unit_price), 50)

3. 외부 파일 또는 데이터베이스 활용

입력 데이터가 복잡하거나 많은 경우에는 외부 파일 또는 데이터베이스에서 입력 데이터를 가져와 사용할 수 있습니다. 이를 통해 데이터의 관리와 변경이 용이해지며, 테스트 코드의 가독성도 향상됩니다.

import json

def load_test_data(file_path):
    with open(file_path, 'r') as file:
        return json.load(file)

class TestCalculateTotalPrice(unittest.TestCase):
    def setUp(self):
        test_data = load_test_data('test_data.json')
        self.quantity = test_data['quantity']
        self.unit_price = test_data['unit_price']
        
    def test_total_price(self):
        self.assertEqual(calculate_total_price(self.quantity, self.unit_price), 50)

결론

단위 테스트에서 입력 데이터를 효과적으로 관리하는 방법은 테스트의 유지보수성과 가독성을 높이는 데 중요합니다. 입력 데이터를 관리하는 방법은 테스트 코드의 품질과 신뢰도에 직접적인 영향을 미치며, 유지보수성과 재사용성을 향상시킵니다.

위의 예시들을 참고하여, 단위 테스트에서 입력 데이터를 효율적으로 관리하는 방법을 적용해 보시기 바랍니다.

참고 자료: