it-praxisportal/00_fehlersuche_und_grundlagen/test_aufgabe.py

63 lines
2.8 KiB
Python

import unittest
import sys
import importlib
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
class TestKapitel00(unittest.TestCase):
@classmethod
def setUpClass(cls):
# Wenn ein Test-Runner vorher 'aufgabe' durch ein anderes Modul ersetzt hat (z.B. musterloesung):
if hasattr(cls, "modul_name"):
cls.mod = importlib.import_module(cls.modul_name)
else:
try:
cls.mod = importlib.import_module("aufgabe")
except SyntaxError as e:
cls.mod = None
cls.import_error = f"SyntaxError in 'aufgabe.py': {e}. Überprüfe Doppelpunkte und Einrückungen!"
except Exception as e:
cls.mod = None
cls.import_error = f"Fehler beim Import von 'aufgabe.py': {e}"
def _get_modul(self):
if getattr(self, "mod", None) is None:
err = getattr(self, "import_error", "aufgabe.py konnte nicht importiert werden")
self.fail(f"❌ {err}")
return self.mod
def test_01_berechne_endstand(self):
"""Prüft berechne_endstand (Syntax & Einrückung behoben)."""
mod = self._get_modul()
self.assertTrue(hasattr(mod, "berechne_endstand"), "Funktion 'berechne_endstand' fehlt!")
self.assertEqual(mod.berechne_endstand(20, 15), 40, "berechne_endstand(20, 15) sollte 40 sein (inkl. Bonus)!")
self.assertEqual(mod.berechne_endstand(20, 5), 25, "berechne_endstand(20, 5) sollte 25 sein!")
def test_02_punkte_multiplizieren(self):
"""Prüft punkte_multiplizieren (Tippfehler NameError behoben)."""
mod = self._get_modul()
self.assertTrue(hasattr(mod, "punkte_multiplizieren"), "Funktion 'punkte_multiplizieren' fehlt!")
self.assertEqual(mod.punkte_multiplizieren(10, 3), 30)
self.assertEqual(mod.punkte_multiplizieren(7, 2), 14)
def test_03_formatierte_ausgabe(self):
"""Prüft formatierte_ausgabe (TypeError behoben)."""
mod = self._get_modul()
self.assertTrue(hasattr(mod, "formatierte_ausgabe"), "Funktion 'formatierte_ausgabe' fehlt!")
ergebnis = mod.formatierte_ausgabe("Mia", 50)
self.assertEqual(ergebnis, "Spieler Mia hat 50 Punkte!")
def test_04_ist_sieger_grenzwert(self):
"""Prüft Logik von ist_sieger (>= 50 Punkte)."""
mod = self._get_modul()
self.assertTrue(hasattr(mod, "ist_sieger"), "Funktion 'ist_sieger' fehlt!")
self.assertTrue(mod.ist_sieger(50), "Fehler: Genau 50 Punkte müssen True (Sieg) ergeben (>= 50)!")
self.assertTrue(mod.ist_sieger(100), "100 Punkte müssen True ergeben!")
self.assertFalse(mod.ist_sieger(49), "49 Punkte dürfen noch kein Sieg sein (False)!")
if __name__ == "__main__":
unittest.main(verbosity=2)