Schreiben Sie den Test in die Python-Dokumentzeichenfolge

Die Funktion "doctest.testmod ()" des Moduls "doctest" beschreibt den Test in der Dokumentzeichenfolge und führt ihn im ausführlichen Modus aus, um den Test auszuführen.

Wo ich früher geschrieben habe

sample.py


def twice(n):
    """Eine Funktion, die das Argument verdoppelt und zurückgibt
    >>> twice(8)
    16
    >>> twice(1850923)
    """
    return n * 2


'''TEST
twice(8)
 #Ausführungsergebnis
 #16
twice(1850923)
 #Ausführungsergebnis
 #3701846
'''#← Dreifache Anführungszeichen hier'TEST'Ziehen Sie es zweimal an die Stelle, an der es geschrieben steht(8), twice(1850923)Laufen

Wenn Sie das dreifache Anführungszeichen unter "TEST" auf "TEST" setzen, wird der docstring-ähnliche mehrzeilige Kommentar entfernt, und wenn er ausgeführt wird, wird die Funktion "zweimal" ausgeführt und getestet. Der TEST befindet sich unterhalb der Funktion, sieht also schlecht aus. Ich möchte es, wenn möglich, in einem Dokument zusammenfügen.

Verwenden Sie das Doctest-Modul

Wenn Sie jedoch das doctest-Modul verwenden, können Sie es in die Dokumentzeichenfolge schreiben und Geschicklichkeit ausführen, die nicht ausgeführt wird, wenn sie von anderen Modulen ausgeführt wird.

doctest_sample.py


def twice(n):
    """Eine Funktion, die das Argument verdoppelt und zurückgibt
    >>> twice(8)
    16
    >>> twice(1850923)
    3701846
    """
    return n * 2


print('name?>>', __name__)
if __name__ == "__main__":
    doctest.testmod()

print('EOF')

Überprüfen Sie das Ausführungsergebnis mit den folgenden vier Methoden

  1. ipython
    1. %run doctest_sample -v
    2. %run doctest_use.py -v
  2. sublimetext
  3. Führen Sie doctest_sample.py unter sublimetext aus
  4. Führen Sie doctest_use.py.py im Sublimetext aus

Importieren Sie einfach den Inhalt von doctest_use.py.py

import doctest_sample
```

Wenn Sie eine Python-Datei auf ipython ausführen, führen Sie sie mit '% run ' aus. Wenn Sie doctest.testmod () verwenden, führen Sie es im ausführlichen Modus -v aus.

Wenn Sie im Sublimetext ausführen, erstellen Sie mit "Strg + B". Die Ausführung des ausführlichen Modus ist standardmäßig nicht enthalten (unabhängig davon, ob er falsch oder wahr ist oder nicht). Erstellen Sie daher ein Build-System und speichern Sie es im Benutzerverzeichnis Wählen Sie "Python_Verbose" aus Menü> Extras> System erstellen und "Strg + b"

Python_Verbose.sublime-build


{
    "cmd": ["python", "$file", "-v"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Informationen zu den Befehlszeilenoptionen -u und -v

1 Befehlszeile und Umgebung (http://docs.python.jp/3.3/using/cmdline.html) 1.1 Befehlszeile 1.1.3 Andere Optionen

-u¶ (Original)

Force the binary layer of the stdout and stderr streams (which is available as their buffer attribute) to be unbuffered. The text I/O layer will still be line-buffered if writing to the console, or block-buffered if redirected to a non-interactive file.

Siehe auch PYTHONUNBUFFERED.

-v

Bei jeder Initialisierung eines Moduls wird eine Meldung angezeigt, die angibt, wo es geladen wurde (Dateiname oder integriertes Modul). Bei zweimaliger Angabe (-vv) wird für jede bei der Suche nach Modulen überprüfte Datei eine Meldung angezeigt. Außerdem finden Sie am Ende Informationen zur Modulbereinigung. Siehe auch PYTHONVERBOSE.

Ergebnis 1.1 % run doctest_sample -v auf ipython

1.1


In [80]: run doctest_sample.py -v
name?>> __main__
Trying:
    twice(8)
Expecting:
    16
ok
Trying:
    twice(1850923)
Expecting:
    3701846
ok
1 items had no tests:
    __main__
1 items passed all tests:
   2 tests in __main__.twice
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
EOF

Da das Namensattribut main ist, wird doctest ausgeführt Die Beschreibung von doctest ist Führen Sie es im Python-Format aus, in dem Sie mit >>> geschrieben haben, und geben Sie das Ergebnis zurück Wenn keine Fehler vorliegen, geben Sie "OK" aus und fahren Sie mit dem nächsten Test fort.

1.1


Trying:
    twice(8)
Expecting:
    16
ok

Testzusammenfassung anzeigen

1.1


1 items had no tests:
    __main__
1 items passed all tests:
   2 tests in __main__.twice
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
body...

Ergebnis 1.2 % run doctest_use -v auf ipython

1.2


In [81]: run doctest_use.py

Es wird keine Ausgabe angezeigt.

Ergebnis 2.1 Erstellen Sie doctest_sample.py auf Sublimetext

2.1


name?>> __main__
Trying:
    twice(8)
Expecting:
    16
ok
Trying:
    twice(1850923)
Expecting:
    3701846
ok
1 items had no tests:
    __main__
1 items passed all tests:
   2 tests in __main__.twice
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
EOF
[Finished in 0.5s]

Entspricht dem 1.1-Ergebnis, außer dass "[Fertig in 0.5s]" im Sublimetext-Build-Ergebnis angezeigt wird

Ergebnis 2.2 Erstellen Sie doctest_use.py auf Sublimetext

2.2


name?>> doctest_sample
EOF
[Finished in 0.4s]

Im Gegensatz zu Ergebnis 1.2 scheint die print-Anweisung ausgeführt zu werden.

Zusammenfassung

doc.py


import docstring

def hoge():
    '''
    hoge(args)
    '''


if __name__ == "__main__":
    doctest.testmod()

Recommended Posts

Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
Schreiben Sie eine Dichotomie in Python
Schreiben Sie einen tabellengesteuerten Test in C.
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Schreiben Sie Selentestcode in Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Führen Sie den Python-Interpreter im Skript aus
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Schreiben Sie Python in MySQL
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Richten Sie einen Test-SMTP-Server in Python ein.
Tipps zum Schreiben werden in Python kurz abgeflacht
Ausgabe in Form eines Python-Arrays
[Python] Finden Sie die Translokationsmatrix in Einschlussnotation
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Machen Sie einen Screenshot in Python
Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
Fühlen Sie sich frei, einen Test mit der Nase zu schreiben (im Fall von + gevent)
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Schreiben Sie ein super einfaches molekulardynamisches Programm in Python
Finde Fehler in Python
Schreiben Sie die Beta-Distribution in Python
Algorithmus in Python (Haupturteil)
Schreiben Sie Python in Rstudio (reticulate)
Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Erstellen Sie ein Lesezeichen in Python
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Zeichne ein Herz in Python
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Stellen Sie den Python-Test in Jenkins ein
Was bedeutet das letzte () in einer Funktion in Python?
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Erstellen Sie einen lokalen Bereich in Python, ohne den Namespace zu verschmutzen
Verwendung der Methode __call__ in der Python-Klasse
Ändern Sie das Standardausgabeziel in eine Datei in Python
Schreiben Sie ein Python-Programm, um die Bearbeitungsentfernung [Python] [Levenshtein-Entfernung] zu ermitteln.
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Ich habe versucht, den Chi-Quadrat-Test in Python und Java zu programmieren.
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Wahrscheinlich in einer Nishiki-Schlange (Originaltitel: Vielleicht in Python)