본문 바로가기

개발/리팩토링

[리팩토링 2판 파이썬 코드로 변경해보기] 2탄 statement() 테스트 코드 추가

반응형
리팩토링 2판의 제일 처음 나오는 예제를 파이썬 코드로 변경 하면서, 책의 내용에 따라 리팩토링 해보고 저자의 의견과 내 의견을 정리

 

테스트 추가 하기

리팩토링으로 인해서, 앞으로 변경 될 코드를 검증하기 위해서 테스트를 먼저 추가 해야 만 한다.

import json
import unittest

from refactoring.main import statement


class TestStatement(unittest.TestCase):
    def test_statement(self):
        # Given: json 파일로 부터 invoice와 plays를 불러오고,
        with open("invoices.json") as json_file:
            invoice = json.load(json_file)[0]
        with open("plays.json") as json_file:
            plays = json.load(json_file)

        # When: statement 함수를 호출 하면,
        actual = statement(invoice, plays)

        # Then: 실제 값은 예상 값대로 나와야 한다.
        expected = (
            "청구 내역 (고객명: BigCo)\n"
            " Hamlet: $650.00 (55석)\n"
            " As You Like It: $580.00 (35석)\n"
            " Othello: $500.00 (40석)\n"
            "총액: $1,730.00\n"
            "적립 포인트': 47점\n"
        )
        self.assertEqual(actual, expected)

책에서는 invoice와 plays 를 따로 수정하지 않기 때문에(즉, given 값이 수정되지 않을 것이기 때문에) 위 테스트 1개만 패스하는 것을 확인해도 고치는 코드가 유효한지를 검증 할 수 있다.

반응형