1
+
2
+ import unittest
3
+ from abc import ABC , abstractmethod
4
+
5
+ # EJERCICIO:
6
+ # Crea una función que se encargue de sumar dos números y retornar
7
+ # su resultado.
8
+ # Crea un test, utilizando las herramientas de tu lenguaje, que sea
9
+ # capaz de determinar si esa función se ejecuta correctamente.
10
+ class Operation (ABC ):
11
+ @abstractmethod
12
+ def calculate (self , a : int , b : int ) -> int :
13
+ pass
14
+
15
+
16
+ class Sum (Operation ):
17
+ def calculate (self , a : int , b : int ) -> int :
18
+ return a + b
19
+
20
+
21
+ class TestSum (unittest .TestCase ):
22
+ def setUp (self ):
23
+ self .sum = Sum ()
24
+
25
+ def test_sum_number_possitive (self ):
26
+ # Arrange
27
+ value1 = 1
28
+ value2 = 2
29
+ # Act
30
+ expected = value1 + value2
31
+ # Assert
32
+ self .assertEqual (self .sum .calculate (value1 , value2 ), expected )
33
+
34
+ def test_sum_number_negative (self ):
35
+ # Arrange
36
+ value1 = - 1
37
+ value2 = - 2
38
+ # Act
39
+ expected = value1 + value2
40
+ # Assert
41
+ self .assertEqual (self .sum .calculate (value1 , value2 ), expected )
42
+
43
+ def test_sum_number_mixed (self ):
44
+ # Arrange
45
+ value1 = - 1
46
+ value2 = 2
47
+ # Act
48
+ expected = value1 + value2
49
+ # Assert
50
+ self .assertEqual (self .sum .calculate (value1 , value2 ), expected )
51
+
52
+ def test_sum_float_number (self ):
53
+ # Arrange
54
+ value1 = 1.5
55
+ value2 = 2.5
56
+ # Act
57
+ expected = value1 + value2
58
+ # Assert
59
+ self .assertEqual (self .sum .calculate (value1 , value2 ), expected )
60
+
61
+ def test_sum_no_number (self ):
62
+ # Arrange
63
+ value1 = "1"
64
+ value2 = 2
65
+ # Act
66
+ # Assert
67
+ self .assertRaises (TypeError , self .sum .calculate )
68
+
69
+
70
+ # DIFICULTAD EXTRA (opcional):
71
+ # Crea un diccionario con las siguientes claves y valores:
72
+ # "name": "Tu nombre"
73
+ # "age": "Tu edad"
74
+ # "birth_date": "Tu fecha de nacimiento"
75
+ # "programming_languages": ["Listado de lenguajes de programación"]
76
+ # Crea dos test:
77
+ # - Un primero que determine que existen todos los campos.
78
+ # - Un segundo que determine que los datos introducidos son correctos.
79
+ class TestUserData (unittest .TestCase ):
80
+ def setUp (self ):
81
+ self .key_name = "name"
82
+ self .key_age = "age"
83
+ self .key_birth_date = "birth_date"
84
+ self .key_programming_languages = "programming_languages"
85
+
86
+ self .data = {
87
+ "name" : "Roswer" ,
88
+ "age" : 31 ,
89
+ "birth_date" : "1993-06-30" ,
90
+ "programming_languages" : ["Python" , "Kotlin" , "Dart" ]
91
+ }
92
+
93
+ def test_check_if_exits_all_keys (self ):
94
+ # Arrange
95
+ keys_to_check = [self .key_name , self .key_age , self .key_birth_date , self .key_programming_languages ]
96
+ keys = self .data .keys ()
97
+ # Act
98
+ # Assert
99
+ self .assertTrue (all (key in keys for key in keys_to_check ))
100
+ self .assertTrue (len (keys ) == len (keys_to_check ))
101
+
102
+ def test_check_if_exits_all_keys_one_more (self ):
103
+ # Arrange
104
+ self .data ["extra_key" ] = "Extra value"
105
+ keys_to_check = [self .key_name , self .key_age , self .key_birth_date , self .key_programming_languages ]
106
+ keys = self .data .keys ()
107
+ # Act
108
+ # Assert
109
+ self .assertTrue (all (key in keys for key in keys_to_check ))
110
+ self .assertFalse (len (keys ) == len (keys_to_check ))
111
+
112
+ def test_check_type_data (self ):
113
+ # Arrange
114
+ # Act
115
+ # Assert
116
+ self .assertTrue (type (self .data [self .key_name ]) == str )
117
+ self .assertTrue (type (self .data [self .key_age ]) == int )
118
+ self .assertTrue (type (self .data [self .key_birth_date ]) == str )
119
+ self .assertTrue (type (self .data [self .key_programming_languages ]) == list )
120
+
121
+ if __name__ == '__main__' :
122
+ unittest .main ()
0 commit comments