Korrektheit mit Python testen
Eine Implementierung des Algorithmus
Wir betrachten weiterhin den folgenden Algorithmus zur ggT-Berechnung:
Hier eine Implementierung dieses Algorithmus in Python:
Aufgabe 1
Gib weitere sinnvolle Testfälle ein und überprüfe, ob sie korrekt ausgeführt werden..
Python-Programm mit integrierten Testfällen
Python erlaubt es, Testfälle in Funktionsdefinitionen zu integrieren. Das hat den Vorteil, dann man die Erwartungen an die Funktion im Vorfeld dokumentieren kann. Python ist in der Lage, die vorgegebenen Testfälle automatisiert zu überprüfen.
def ggt(x, y):
""" Testfälle:
>>> ggt(44, 12)
4
>>> ggt(7, 13)
1
>>> ggt(4, 4)
4
>>> ggt(1, 6)
1
>>> ggt(6, 18)
6
"""
while x > 0 and y > 0:
if x >= y:
x = x - y
else:
y = y - x
return x+y
from doctest import testmod
testmod(verbose=True)
Hier sind Testaufrufe der implementierten Funktion in einem Kommentarbereich dargestellt.
Innerhalb dieses Kommentarbereichs werden Aufrufe der Funktion im interaktiven Modus simuliert.
Das benutzte Modul doctest
ist in der Lage, die Testfälle zu überprüfen und eine geeignete
Rückmeldung zu liefern.
(Details zu Modultests findest du im entsprechenden Abschnitt
Exkurs - Modultest in Python.)
Im vorliegenden Fall erhält man:
Trying:
ggt(44, 12)
Expecting:
4
ok
Trying:
ggt(7, 13)
Expecting:
1
ok
Trying:
ggt(4, 4)
Expecting:
4
ok
Trying:
ggt(1, 6)
Expecting:
1
ok
Trying:
ggt(6, 18)
Expecting:
6
ok
1 items had no tests:
__main__
1 items passed all tests:
5 tests in __main__.ggt
5 tests in 2 items.
5 passed and 0 failed.
Test passed.
Alle Testfälle sind hier erfolgreich überprüft worden.
Aufgabe 2
Probiere das selbst aus. Überprüfe auch, wie Python sich verhält, wenn ein Testfall nicht erfolgreich ist.