Exkurs - Modultest in Python

Schnittstellenbeschreibungen mit Testfällen

Die Funktionsdefinitionen im folgenden Quelltext enthalten Testfälle in Form von Zeichenketten (mit 3 Anführungszeichen), die Funktionsaufrufe und die erwarteten Ergebnisse beschreiben.

Python stellt eine Möglichkeit zur Verfügung, wie man solche Testfälle automatisiert überprüfen kann. Hierzu muss man nur die Funktion testmod des Moduls doctest ausführen (siehe Quelltext).

def verschluesseltesZeichen(zeichen, schluessel):
    
    # zeichen: Großbuchstabe
    # schluessel: Zuordnungstabelle in Form einer Zeichenkette
    # return: zum übergebenen Buchstaben zugeordneter Buchstabe
    # Beispiel:

    """
    >>> verschluesseltesZeichen('B', 'GKXCSLZUAHWDBMTYENJVPOIRFQ')
    'K'
    """

    nummer = ord(zeichen)-ord('A')
    neuesZeichen = schluessel[nummer]
    return neuesZeichen

def verschluesselterText(klartext, schluessel):

    # klartext: Zeichenkette aus Großbuchstaben
    # schluessel: Zuordnungstabelle in Form einer Zeichenkette
    # return: neue, mit der Zuordnungstabelle konstruierte Zeichenkette
    # Beispiel:

    """
    >>> verschluesselterText('HUND', 'GKXCSLZUAHWDBMTYENJVPOIRFQ')
    'UPMC'
    """

    geheimtext = ''
    for zeichen in klartext:
        neuesZeichen = verschluesseltesZeichen(zeichen, schluessel)
        geheimtext = geheimtext + neuesZeichen
    return geheimtext

if __name__ == '__main__':
    from doctest import testmod
    testmod(verbose=True)

Python erzeugt bei der Ausführung der Datei, in der die Funktionsdefinitionen gespeichert sind, ein Testprotokoll, dem man die Testergebnisse entnehmen kann. Im vorliegenden Fall erhält man das folgende Testprotokoll:

>>> 
Trying:
    verschluesselterText('HUND', 'GKXCSLZUAHWDBMTYENJVPOIRFQ')
Expecting:
    'UPMC'
ok
Trying:
    verschluesseltesZeichen('B', 'GKXCSLZUAHWDBMTYENJVPOIRFQ')
Expecting:
    'K'
ok
2 items passed all tests:
   1 tests in __main__.verschluesselterText
   1 tests in __main__.verschluesseltesZeichen
2 tests in 2 items.
2 passed and 0 failed.
Test passed.

Aufgabe 1

(a) Ergänze weitere Testfälle in den oben gezeigten Schnittstellenbeschreibungen. Führe anschließend die Modultests durch.

(b) Teste entsprechend die Funktionen zum Entschlüsseln von Texten.

X

Fehler melden

X

Suche