테스트 코드 구조 분석(행맨 테스트 코드 이용)

  • test.py
    # 필요한 모듈을 가져옵니다: 유닛 테스트를 위한 unittest 및 'app' 모듈(이름이 'hangman'으로 변경됨).
    import unittest
    import app as hangman

    # Hangman 테스트 케이스를 위한 클래스를 정의하며, unittest.TestCase를 상속합니다.
    class HangmanTestCase(unittest.TestCase):

        # 'checkCorrectAnswer' 함수에 대한 테스트 케이스입니다.
        def test_checkCorrectAnswer(self):
            # 특정 매개변수로 'checkCorrectAnswer' 함수를 호출합니다.(아래 app.py 파일에 있음)
            answer = hangman.checkCorrectAnswer("baon", "baboon")
            # 결과가 True인지 확인하여 정확성을 기대합니다.
            self.assertTrue(answer)

        # 'checkWrongAnswer' 함수에 대한 테스트 케이스입니다.
        def test_checkWrongAnswer(self):
            # 특정 매개변수로 'checkWrongAnswer' 함수를 호출합니다. (아래 app.py 파일에 있음)
            answer = hangman.checkWrongAnswer("zebrio", "zebra")
            # 결과가 True인지 확인하여 잘못된 답을 기대합니다.
            self.assertTrue(answer)

        # 'checkCorrectAnswer'에 대한 추가 테스트 케이스 1입니다.
        def test_1(self):
            # 특정 매개변수로 'checkCorrectAnswer' 함수를 호출합니다.
            answer = hangman.checkCorrectAnswer("bazn", "baboon")
            # 결과가 False인지 확인하여 잘못된 추측을 기대합니다.
            self.assertFalse(answer)

        # 'checkCorrectAnswer'에 대한 추가 테스트 케이스 2입니다.
        def test_2(self):
            # 빈 문자열과 공백을 매개변수로 'checkCorrectAnswer' 함수를 호출합니다.
            answer = hangman.checkCorrectAnswer("", " ")
            # 결과가 False인지 확인하여 빈 문자열이 올바른 추측이 아님을 기대합니다.
            self.assertFalse(answer)

        # 'checkCorrectAnswer'에 대한 추가 테스트 케이스 3입니다.
        def test_3(self):
            # 대문자를 사용하여 'checkCorrectAnswer' 함수를 호출합니다.
            answer = hangman.checkCorrectAnswer("ZEBRA", "zebra")
            # 결과가 False인지 확인하여 대소문자 구분 비교를 기대합니다.
            self.assertFalse(answer)

    # 스크립트가 직접 실행되는지 확인하고 유닛 테스트를 실행합니다.
    if __name__ == "__main__":
        unittest.main()

  • app.py
    (중략)
    # 플레이어가 이겼는지 확인
    def checkCorrectAnswer(correctLetters, secretWord):
        # 모든 글자가 올바르게 추측되었는지 여부를 나타내는 변수
        foundAllLetters = True
        
        # 비밀 단어의 각 글자에 대해 반복
        for i in range(len(secretWord)):
            # 만약 비밀 단어의 현재 글자가 올바르게 추측된 글자에 포함되어 있지 않다면
            if secretWord[i] not in correctLetters:
                # foundAllLetters를 False로 설정하고 반복 중지
                foundAllLetters = False
                break
        
        # 모든 글자가 올바르게 추측되었는지 여부 반환
        return foundAllLetters


    # 플레이어가 너무 많은 횟수로 추측하여 게임에 패배했는지 확인
    def checkWrongAnswer(missedLetters, secretWord):
        # 만약 플레이어가 너무 많은 횟수로 추측하여 패배한 경우
        if len(missedLetters) == len(HANGMANPICS) - 1:
            # True 반환
            return True
        # 그 외의 경우 False 반환
        return False

'데이터 기초' 카테고리의 다른 글

AB테스트  (0) 2024.01.04
ETL 기초 실습  (0) 2023.12.31
워드클라우드 이용 데이터 시각화  (0) 2023.10.27
셀레니엄 이용한 자동화 웹 스크래핑  (0) 2023.10.26

+ Recent posts