1+ import unittest
2+ """
3+ * EJERCICIO:
4+ * Crea una función que se encargue de sumar dos números y retornar
5+ * su resultado.
6+ * Crea un test, utilizando las herramientas de tu lenguaje, que sea
7+ * capaz de determinar si esa función se ejecuta correctamente.
8+ """
9+
10+ def add (n1 , n2 ):
11+ if not isinstance (n1 , (int , float )) or not isinstance (n2 , (int , float )):
12+ raise TypeError ("Args must be integer or float numbers" )
13+ return n1 + n2
14+
15+
16+ class TestAddMethod (unittest .TestCase ):
17+ def test_postivite (self ):
18+ self .assertEqual (add (10 , 2 ), 12 )
19+ self .assertEqual (add (5 , 3 ), 8 )
20+ self .assertEqual (add (5 , - 3 ), 2 )
21+
22+
23+ def test_negative (self ):
24+ self .assertEqual (add (- 2 , - 3 ), - 5 )
25+ self .assertEqual (add (- 5 , 3 ), - 2 )
26+
27+ def test_str (self ):
28+ with self .assertRaises (TypeError ):
29+ add ("5" , 2 )
30+ with self .assertRaises (TypeError ):
31+ add (5 , "2" )
32+ with self .assertRaises (TypeError ):
33+ add ("5" , "2" )
34+
35+ # if __name__ == "__main__":
36+ # unittest.main()
37+
38+ """
39+ * DIFICULTAD EXTRA (opcional):
40+ * Crea un diccionario con las siguientes claves y valores:
41+ * "name": "Tu nombre"
42+ * "age": "Tu edad"
43+ * "birth_date": "Tu fecha de nacimiento"
44+ * "programming_languages": ["Listado de lenguajes de programación"]
45+ * Crea dos test:
46+ * - Un primero que determine que existen todos los campos.
47+ * - Un segundo que determine que los datos introducidos son correctos.
48+ """
49+
50+ info = dict (name = "duban" , age = 25 , birth_date = "unknown" ,
51+ programming_languages = ["Python" , "Java" ])
52+
53+
54+ class TestDictValues (unittest .TestCase ):
55+
56+ def setUp (self ):
57+ """
58+ Setting before each proof.
59+ Create the dictionary 'info' with the proof data
60+ """
61+
62+ self .info = dict (
63+ name = "duban" ,
64+ age = 25 ,
65+ birth_date = "unknown" ,
66+ programming_languages = ["Python" , "Java" ]
67+ )
68+
69+ def tearDown (self ):
70+ """
71+ Clean after each proof.
72+ Reset the dictionary (optional in this case but util that we need release space)
73+ """
74+ self .info = None
75+
76+
77+ def test_keys_required (self ):
78+ """
79+ Verify that dictionary info contain the required keys
80+ """
81+ keys_required = {"name" , "age" , "birth_date" , "programming_languages" }
82+ self .assertTrue (keys_required .issubset (self .info .keys ()))
83+
84+ def test_data_types (self ):
85+ """
86+ Verify that dictionary values are correct
87+ """
88+ self .assertIsInstance (self .info ["name" ], str , "The name must be string" )
89+ self .assertIsInstance (self .info ["age" ], int , "The age must be integer" )
90+ self .assertIsInstance (self .info ["birth_date" ], str , "The birth date must be string" )
91+ self .assertIsInstance (self .info ["programming_languages" ], list , "The programming languages must be list" )
92+
93+ def test_programming_languages_noempty (self ):
94+ """
95+ Verify that list is not empty
96+ """
97+ self .assertGreater (len (self .info ["programming_languages" ]), 0 , "The programming languages" +
98+ "list must contain values" )
99+
100+ def test_programming_lang_content (self ):
101+ """
102+ Verify the content of programming languages list
103+ """
104+ for language in self .info ["programming_languages" ]:
105+ self .assertIsInstance (language , str , f"The language { language } is not string" )
106+
107+ def test_data_correct (self ):
108+ """
109+ Verify that each dictionary values are correct
110+ """
111+ self .assertEqual (self .info ["name" ], "duban" , "The name is not correct" )
112+ self .assertEqual (self .info ["age" ], 25 , "The age is not correct" )
113+ self .assertEqual (self .info ["birth_date" ], "unknown" , "The birth date is not correct" )
114+ self .assertEqual (self .info ["programming_languages" ], ["Python" , "Java" ],
115+ "The programming languages are not correct" )
116+
117+
118+ if __name__ == "__main__" :
119+ unittest .main ()
0 commit comments