84 lines
3.7 KiB
Python
84 lines
3.7 KiB
Python
import unittest
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Sicherstellen, dass das aktuelle Verzeichnis im Modulpfad ist
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
try:
|
|
import aufgabe
|
|
except ImportError as e:
|
|
raise ImportError(f"Konnte 'aufgabe.py' nicht importieren: {e}")
|
|
|
|
|
|
class TestKapitel01(unittest.TestCase):
|
|
|
|
def test_01_klasse_existiert(self):
|
|
"""Prüft, ob die Klasse Haustier definiert wurde."""
|
|
self.assertTrue(
|
|
hasattr(aufgabe, "Haustier"),
|
|
"Fehler: Die Klasse 'Haustier' existiert noch nicht. Nutze: class Haustier:"
|
|
)
|
|
self.assertTrue(
|
|
isinstance(aufgabe.Haustier, type),
|
|
"Fehler: 'Haustier' sollte eine Klasse sein!"
|
|
)
|
|
|
|
def test_02_erstelle_bello(self):
|
|
"""Prüft, ob erstelle_bello() ein korrektes Haustier-Objekt liefert."""
|
|
self.assertTrue(hasattr(aufgabe, "erstelle_bello"), "Fehler: Funktion 'erstelle_bello' fehlt!")
|
|
bello = aufgabe.erstelle_bello()
|
|
self.assertIsNotNone(bello, "Fehler: 'erstelle_bello()' gibt None zurück. Vergiss nicht das 'return'!")
|
|
self.assertIsInstance(bello, aufgabe.Haustier, "Fehler: 'bello' muss eine Instanz der Klasse 'Haustier' sein!")
|
|
self.assertEqual(getattr(bello, "name", None), "Bello", "Fehler: 'bello.name' muss 'Bello' sein!")
|
|
self.assertEqual(getattr(bello, "tierart", None), "Hund", "Fehler: 'bello.tierart' muss 'Hund' sein!")
|
|
self.assertEqual(getattr(bello, "alter", None), 3, "Fehler: 'bello.alter' muss 3 sein!")
|
|
|
|
def test_03_erstelle_mimi(self):
|
|
"""Prüft, ob erstelle_mimi() ein korrektes Haustier-Objekt liefert."""
|
|
self.assertTrue(hasattr(aufgabe, "erstelle_mimi"), "Fehler: Funktion 'erstelle_mimi' fehlt!")
|
|
mimi = aufgabe.erstelle_mimi()
|
|
self.assertIsNotNone(mimi, "Fehler: 'erstelle_mimi()' gibt None zurück. Vergiss nicht das 'return'!")
|
|
self.assertIsInstance(mimi, aufgabe.Haustier, "Fehler: 'mimi' muss eine Instanz der Klasse 'Haustier' sein!")
|
|
self.assertEqual(getattr(mimi, "name", None), "Mimi", "Fehler: 'mimi.name' muss 'Mimi' sein!")
|
|
self.assertEqual(getattr(mimi, "tierart", None), "Katze", "Fehler: 'mimi.tierart' muss 'Katze' sein!")
|
|
self.assertEqual(getattr(mimi, "alter", None), 5, "Fehler: 'mimi.alter' muss 5 sein!")
|
|
|
|
def test_04_steckbrief_text(self):
|
|
"""Prüft, ob steckbrief_text() den richtigen String formatiert."""
|
|
self.assertTrue(hasattr(aufgabe, "steckbrief_text"), "Fehler: Funktion 'steckbrief_text' fehlt!")
|
|
tier = aufgabe.Haustier()
|
|
tier.name = "Rocky"
|
|
tier.tierart = "Papagei"
|
|
tier.alter = 2
|
|
|
|
ergebnis = aufgabe.steckbrief_text(tier)
|
|
erwartet = "Rocky ist ein(e) Papagei und ist 2 Jahre alt."
|
|
self.assertEqual(
|
|
ergebnis,
|
|
erwartet,
|
|
f"Fehler: Textausgabe weicht ab!\nErwartet: '{erwartet}'\nErhalten: '{ergebnis}'"
|
|
)
|
|
|
|
def test_05_aelteres_tier(self):
|
|
"""Prüft die Altersvergleich-Funktion."""
|
|
self.assertTrue(hasattr(aufgabe, "aelteres_tier"), "Fehler: Funktion 'aelteres_tier' fehlt!")
|
|
t1 = aufgabe.Haustier()
|
|
t1.name = "Tier A"
|
|
t1.alter = 4
|
|
|
|
t2 = aufgabe.Haustier()
|
|
t2.name = "Tier B"
|
|
t2.alter = 7
|
|
|
|
t3 = aufgabe.Haustier()
|
|
t3.name = "Tier C"
|
|
t3.alter = 4
|
|
|
|
self.assertIs(aufgabe.aelteres_tier(t1, t2), t2, "Fehler: Tier B (7) ist älter als Tier A (4)!")
|
|
self.assertIs(aufgabe.aelteres_tier(t2, t1), t2, "Fehler: Tier B (7) ist älter als Tier A (4)!")
|
|
self.assertIs(aufgabe.aelteres_tier(t1, t3), t1, "Fehler: Bei gleichem Alter soll tier1 zurückgegeben werden!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main(verbosity=2)
|