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