Ziel

  • Sie können Testklassen auf der Basis von pytest erstellen und anwenden.

Hinweis

  • Unit-Tests werden häufig mit agilen Programmierverfahren verwendet, speziell der testgetrieben Programmierung TDD.
    • Dabei werden zuerst die Testfälle (Black-Box) festgelegt und dann der dazu nötige Testcode erstellt.
    • Erst dann wird die eigentliche Klasse erstellt und laufende gegen die Testklasse geprüft.
    • Der Code wird solange angepasst, bis alle Tests fehlerfrei absolviert werden (s.a. Theorie, Kapitel Unit Testing).
  • Wir verwenden hier den Unit-Test in Bezug auf schon bestehende Klassen.

Auftrag

1. Vorbereiten der Testdatei grade_list_test.py

  • Erstellen Sie – wenn nicht schon erfolgt – ein Projekt für pytest in PyCharm.
  • Fügen Sie dem Unit Test eine Funktion testee() hinzu, welche eine GradeList zurück gibt.
  • Versehen Sie die Funktion mit der Annotation @pytest.fixture.

2. Testen der Methode get_max_grade_count()

  • Wir prüfen, ob der gelieferte Wert der Grösse der Liste entspricht.
  • Fügen Sie die Methode test_max_grade_count() hinzu.
  • Die Methode verwendet das pytest-Schlüsselwort assert zum Vergleichen des gewünschten mit dem aktuellen Wert.
  • Prüfen Sie mit assert, ob das Ergebnis vom Aufruf testee.get_max_groesse() mit dem konstanten Wert 3 übereinstimmt.
  • Führen Sie den Unit Test aus. Das Ergebnis des Tests wird im linken Teil des Programmfensters angezeigt.
  • Wenn Sie alles richtig gemacht haben, finden Sie einen orangen Balken und im unteren Bereich des Fensters einen Hinweis auf den Fehler.
  • Ersetzen Sie nun die Zahl durch den konstanten Wert 5.
  • Speichern Sie die Klasse und führen Sie den Test erneut aus.
  • Nun muss als Ergebnis ein grüner Balken angezeigt werden.

3. Test der Methode get_current_grade_count()

  • Wir prüfen, ob die Methode sich in verschiedenen Situationen korrekt verhält.
  • Zu Beginn muss die Grösse 0 sein, nach dem Zufügen eines Elements muss der Wert 1 sein und nach zufügen von mehr als 5 Elemente muss der Wert 5 sein.
  • Es sind hier 3 Testmethoden nötig, um alle diese Fälle sicherzustellen.
  • Erstellen Sie die 3 Methoden test_list_is_empty(), test_list_is_not_empty() und test_list_is_full().
  • Beachten Sie, dass die Methode add_grade() eine Exception wirft, die Sie hier fangen aber nicht behandeln müssen.
  • Führen Sie nun den Test durch und prüfen Sie das Ergebnis.

4. Testen der Methode add_grade()

  • Wir prüfen eine Methode, die im Fehlerfall eine Exception wirft. Pytest kann auch dieses Verhalten prüfen.
  • Erstellen Sie 2 Methoden test_add_valid() und test_add_invalid()
  • Bei test_add_valid() sollten Sie wiederum das with Statement verwenden.
  • Führen Sie nun den Test durch und prüfen Sie das Ergebnis.

5. Test der Methode get_grade()

  • Codieren Sie für die folgenden Testfälle Ihre eigenen Test-Methoden.
# Eingabewert Testwert Erwartetes Ergebnis
1 -1 - IndexError wird geworfen
2 0 5.0f 5.0f
3 5 - IndexError wird geworfen

Abgabe

Geben Sie Ihren Code via Moodle ab.

  • modul/m320/learningunits/lu90/aufgaben/lu4-aufgabe_5.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1