Doctest erkennt __future __. division nicht

8

Ich habe den folgenden doctest geschrieben x.doctest :

%Vor%

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:

%Vor%

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.

    
alvas 28.02.2016, 09:18
quelle

2 Antworten

3

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:

%Vor%

Das extraglobs setzt dann die richtigen Compiler-Flags für Sie, wenn Sie einzelne Zeilen daraus zusammenstellen.

Demo:

%Vor%     
Martijn Pieters 05.04.2016, 07:36
quelle
1

Sie können die Option -Q für den Python-Interpreter verwenden. Setzen Sie es auf new :

%Vor%

Hilfe zu Python-Befehlszeilenoptionen mit:

%Vor%

Ausgewählte Ausgabe:

  

-Q arg: division-Optionen: -Qold (Standard), -Qwarn, -Qwarnall, -Qnew

Weitere Hilfedetails hier .

    
Mike Müller 28.02.2016 09:49
quelle

Tags und Links