forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mouredev.py
66 lines (50 loc) · 1.73 KB
/
mouredev.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import unittest
from datetime import datetime, date
"""
Ejercicio
"""
def sum(a, b):
if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
raise ValueError("Los argumentos deben ser enteros o decimales.")
return a + b
class TestSum(unittest.TestCase):
def test_sum(self):
self.assertEqual(sum(5, 7), 12)
self.assertEqual(sum(5, -7), -2)
self.assertEqual(sum(0, 0), 0)
self.assertEqual(sum(2.5, 2.1), 4.6)
self.assertEqual(sum(2, 2.1), 4.1)
self.assertEqual(sum(2.5, 2.5), 5)
def test_sum_type(self):
with self.assertRaises(ValueError):
sum("5", 7)
with self.assertRaises(ValueError):
sum(5, "7")
with self.assertRaises(ValueError):
sum("5", "7")
with self.assertRaises(ValueError):
sum("a", 7)
with self.assertRaises(ValueError):
sum(None, 7)
"""
Extra
"""
class TestData(unittest.TestCase):
def setUp(self) -> None:
self.data = {
"name": "Brais Moure",
"age": 36,
"birth_date": datetime.strptime("29-04-87", "%d-%m-%y").date(),
"programming_languages": ["Python", "Kotlin", "Swift"]
}
def test_fields_exist(self):
self.assertIn("name", self.data)
self.assertIn("age", self.data)
self.assertIn("birth_date", self.data)
self.assertIn("programming_languages", self.data)
def test_data_is_correct(self):
self.assertIsInstance(self.data["name"], str)
self.assertIsInstance(self.data["age"], int)
self.assertIsInstance(self.data["birth_date"], date)
self.assertIsInstance(self.data["programming_languages"], list)
unittest.main()