Post

테스트 실습[Elice]

테스트 할 함수 chicken.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
menu = {
    "허니콤보" : 23000,
    "옥수수순살" : 23000,
    "레드윙" : 19000,
    "갈릭윙" : 19000,
}

def get_menu():
    return menu

def order_chicken(name,count):
    menu = {"허니콤보" : 23000, "옥수수순살" : 23000, "레드윙" : 19000, "갈릭윙" : 19000}


    if not isinstance(name, str):
        raise TypeError("❌ 치킨이름을 입력해 주이소")       # raise 는 강제 예외 명령임  
                                                          # raise 예외종류("에러메세지") 일케 씀   
    if not isinstance(count, int):                        # 예외종류:) ValueError, TypeError, IndexError
        raise ValueError("❌ 마리 수를 제대로 입력해 주이소")

    if name not in menu:
        raise ValueError("❌ 그런 치킨 없어요")

    if count <1:
        raise ValueError("❌ 최소주문 지켜주세요")

    return menu[name]*count

테스트 코드임 test_chicken.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import unittest                            # unittest 모듈 불러옴  
from chicken import order_chicken          # chicken.py 에서 order_chicken 함수를 가져오겠다  

class TestChiken(unittest.TestCase):       # 클래스로 정의하고 들어가야함 unittest는!!!
    # 정상적인 주문 테스트임
    def test_order_chicken(self):          # 테스트 하는 함수에는 앞에 test 붙여주고  
        self.assertEqual(order_chicken("허니콤보",2), 46000)        # 주문하는 칰인, 마리 = 금액임  
        self.assertEqual(order_chicken("레드윙", 1), 19000)        # assertEqual 기대값이 실제값과 일지하는지 확인  
        self.assertNotEqual(order_chicken("옥수수순살", 1), 22000)
        self.assertNotEqual(order_chicken("갈릭윙",1), 20000)      # asserNotEuqal 기대값이 실제값다 다르면 성공임
  
    # 없는 메뉴 주문 테스트임
    def test_order_not_menu(self):
        with self.assertRaises(ValueError):                       # 고추마요를 주문하면 ValueError 발생한다.  
            order_chicken("고추마요",1)
        with self.assertRaisesRegex(ValueError,"그런 치킨 없어요"): # 블랙알리오를 주문하면 오류 메시지가 뜬다.  
            order_chicken("블랙알리오",1)                            # assertRaisesRegex '에러종류' '에러메시지'
    # 잘못된 타입 입력 테스트임1  
    def test_order_not_count(self):
        with self.assertRaisesRegex(ValueError,"최소주문 지켜주세요"):  # 주문 수량이 0일 경우  
            order_chicken("허니콤보", 0)                              # 에러 메세지 뜬다
        with self.assertRaisesRegex(ValueError,"최소주문 지켜주세요"):  
            order_chicken("레드윙", -2)
    # 잘못된 타입 입력 테스트임2  
    def test_order_chicken_typeerror(self):
        with self.assertRaisesRegex(TypeError,"치킨이름을 입력해 주이소"): # 치킨이름 란에 숫자 들어가면 메세지뜸  
            order_chicken(1234,1)
        with self.assertRaisesRegex(TypeError,"마리 수를 제대로 입력해 주이소"): # 마리수에 문자 들어가면 메세지 뜸  
            order_chicken("허니콤보","2")

if __name__ == '__main__':       # unittest 실행을 위함  
    unittest.main()
1
2
3
4
5
6
7
8
python -m unittest discover    # 실행

.....
----------------------------------------------------------------------
Ran 5 tests in 0.002s

OK
This post is licensed under CC BY 4.0 by the author.