11import pytest
22
3- from chapter12 .src .case06 .case06_2 import Employee
3+ from chapter12 .src .case06 .case06_2 import (
4+ Employee ,
5+ Engineer ,
6+ Manager ,
7+ Salesman ,
8+ )
49
510
611def test_employee_creation_with_valid_types ():
712 """유효한 타입으로 직원을 생성할 수 있는지 테스트"""
813 valid_types = ["engineer" , "manager" , "salesman" ]
14+ expected_classes = [Engineer , Manager , Salesman ]
915
10- for type_value in valid_types :
16+ for i , type_value in enumerate ( valid_types ) :
1117 employee = Employee ("Test Employee" , type_value )
1218 assert employee ._name == "Test Employee"
13- assert employee ._type == type_value
14- assert employee .type == type_value # getter 테스트
19+ assert isinstance (employee ._type , expected_classes [i ])
1520
1621
1722def test_employee_creation_with_invalid_type ():
@@ -25,15 +30,15 @@ def test_employee_creation_with_invalid_type():
2530def test_employee_type_setter ():
2631 """type 속성의 setter가 올바르게 작동하는지 테스트"""
2732 employee = Employee ("John Doe" , "engineer" )
28- assert employee .type == "engineer"
33+ assert isinstance ( employee .type , Engineer )
2934
3035 employee .type = "manager"
31- assert employee .type == "manager"
32- assert employee ._type == "manager"
36+ assert isinstance (employee .type , Manager )
3337
34- # 주의: setter는 타입 검증을 하지 않음
35- employee .type = "developer"
36- assert employee .type == "developer"
38+ # 유효하지 않은 타입으로 설정 시도
39+ with pytest .raises (ValueError ) as excinfo :
40+ employee .type = "developer"
41+ assert "Employee cannot be of type developer" in str (excinfo .value )
3742
3843
3944def test_employee_capitalized_type ():
@@ -58,3 +63,14 @@ def test_employee_string_representation():
5863
5964 employee = Employee ("Bob Johnson" , "salesman" )
6065 assert str (employee ) == "Bob Johnson (Salesman)"
66+
67+
68+ def test_employee_type_classes ():
69+ """EmployeeType 서브클래스들이 올바르게 작동하는지 테스트"""
70+ engineer = Engineer ()
71+ manager = Manager ()
72+ salesman = Salesman ()
73+
74+ assert str (engineer ) == "engineer"
75+ assert str (manager ) == "manager"
76+ assert str (salesman ) == "salesman"
0 commit comments