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.
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.
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')
%run doctest_sample -v
%run doctest_use.py -v
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 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"
}
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.
% run doctest_sample -v
auf ipython1.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...
% run doctest_use -v
auf ipython1.2
In [81]: run doctest_use.py
Es wird keine Ausgabe angezeigt.
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
2.2
name?>> doctest_sample
EOF
[Finished in 0.4s]
Im Gegensatz zu Ergebnis 1.2 scheint die print-Anweisung ausgeführt zu werden.
docstring.testmod ()
Python <Dateiname> -v
)doc.py
import docstring
def hoge():
'''
hoge(args)
'''
if __name__ == "__main__":
doctest.testmod()
Recommended Posts