Ich habe den folgenden doctest geschrieben x.doctest
:
Aber als ich python -m doctest x.doctest
auf Python 2.7.11 ausgeführt habe, hat der Doctest from __future__ import division
nicht erkannt:
Auch wenn ich die zukünftige Importanweisung in die erste Zeile verschoben habe:
%Vor%Der doctest schlägt immer noch fehl:
%Vor%Warum ist das so und wie kann ich das beheben?
Gibt es eine Markierung / Option für doctest, die sicherstellt, dass from __future__ import division
erkannt wird?
Hinweis: Ich könnte die Überprüfung auf print (int(m))
oder y = 15.
erzwingen und der doctest wird bestanden, aber das ist nicht wünschenswert.
Doctests führen jede Zeile isoliert durch den Python-Compiler aus. Dies bedeutet, dass alle Compiler-Flags, die mit einer from __future__ import ..
-Anweisung im Doctest selbst angegeben wurden, in einem Doctest unbrauchbar sind.
Sie können jedoch Namen aus dem echten Modul __future__
hinzufügen > zu Ihrem doctest globals. Wenn Sie nicht das from __future__ import <name>
-Format verwenden, sondern stattdessen import __future__
verwenden, importieren Sie dieses tatsächliche Modul und können Referenzen zu den Objekten hinzufügen, die es für den Doctest definiert.% Co_de% oder globs
Wörterbücher:
Das extraglobs
setzt dann die richtigen Compiler-Flags für Sie, wenn Sie einzelne Zeilen daraus zusammenstellen.
Demo:
%Vor% Sie können die Option -Q
für den Python-Interpreter verwenden. Setzen Sie es auf new
:
Hilfe zu Python-Befehlszeilenoptionen mit:
%Vor%Ausgewählte Ausgabe:
-Q arg: division-Optionen: -Qold (Standard), -Qwarn, -Qwarnall, -Qnew
Weitere Hilfedetails hier .