Mini-Projekt: Testbare Bibliothek
Anforderungen
- mind. 2 Funktionen (z. B. clamp, schnitt)
- Type Hints
- logging bei ungewöhnlichen Fällen
- unittest mit normal + Fehler/Grenze
-
unittest.main()
Beispiellösung
Lösung anzeigen
import logging
import unittest
logging.basicConfig(level=logging.INFO)
def clamp(wert: int, lo: int, hi: int) -> int:
if lo > hi:
raise ValueError("lo > hi")
return max(lo, min(hi, wert))
def schnitt(werte: list[float]) -> float:
if not werte:
logging.warning("schnitt: leere Liste")
raise ValueError("leere Liste")
return sum(werte) / len(werte)
class TestLib(unittest.TestCase):
def test_clamp(self):
self.assertEqual(clamp(5, 0, 10), 5)
self.assertEqual(clamp(-1, 0, 10), 0)
def test_schnitt(self):
self.assertEqual(schnitt([2, 4]), 3.0)
def test_schnitt_leer(self):
with self.assertRaises(ValueError):
schnitt([])
if __name__ == "__main__":
unittest.main()
Kapitel 41 geschafft!
Als Nächstes: CLI-Anwendungen mit argparse.