[python] 파이썬 unittest를 이용한 리팩토링의 예제

리팩토링은 기존 코드를 다시 작성하거나 수정하여 가독성을 높이고 유지보수를 쉽게 만드는 과정을 말합니다. 이 예제에서는 파이썬의 unittest를 사용하여 리팩토링하는 방법을 살펴보겠습니다.

Table of Contents

기존 코드

# 기존 코드
def calculate_total_price(price, quantity):
    if price >= 0 and quantity >= 0:
        return price * quantity
    else:
        return 0

# 테스트
assert calculate_total_price(10, 2) == 20
assert calculate_total_price(-10, 2) == 0
assert calculate_total_price(10, -2) == 0
assert calculate_total_price(-10, -2) == 0

리팩토링

기존 코드에서 조건문을 사용하여 가격과 수량이 음수일 때 0을 반환하는 방법은 가독성이 떨어지며 유지보수에 어려움을 줄 수 있습니다. 따라서 아래와 같이 리팩토링하여 가독성과 유지보수성을 높일 수 있습니다.

# 리팩토링
def calculate_total_price(price, quantity):
    if price < 0 or quantity < 0:
        return 0
    return price * quantity

테스트 코드 작성

리팩토링한 코드에 대한 테스트 코드를 작성하여 기능이 변경되지 않았음을 확인할 수 있습니다.

# 테스트 코드
import unittest

class TestCalculateTotalPrice(unittest.TestCase):
    def test_positive_values(self):
        self.assertEqual(calculate_total_price(10, 2), 20)
    
    def test_negative_price(self):
        self.assertEqual(calculate_total_price(-10, 2), 0)
    
    def test_negative_quantity(self):
        self.assertEqual(calculate_total_price(10, -2), 0)
    
    def test_negative_values(self):
        self.assertEqual(calculate_total_price(-10, -2), 0)

if __name__ == '__main__':
    unittest.main()

이제 unittest를 사용하여 리팩토링한 코드를 테스트할 수 있습니다.

이 예제를 통해 unittest를 사용한 리팩토링과 테스트 코드 작성 방법에 대해 알아보았습니다.

참고 자료