Sind portable doctests für python 2 / python 3 möglich?

8
%Vor%

Der Doctest übergibt Python 3, schlägt aber auf 2.x folgendermaßen fehl:

%Vor%

Dies ist nur ein Beispiel, ich habe das in verschiedenen anderen Situationen gesehen (z. B. ob eine Unicode-Zeichenfolge ein Präfix u hat oder nicht). Ich frage mich, ob es eine Option für doctest gibt, um triviale Unterschiede zwischen Python 2 und 3 so zu ignorieren?

Ich suche keine Problemumgehung, um den Test selbst zu modifizieren, so dass er trotz der Einschränkung funktioniert. Ich möchte nur wissen, ob es eine Flagge oder etwas gibt, das etwas Nachsicht für die Kompatibilität mit diesen kleinen Dingen erlaubt, die sich in Python-Versionen geändert haben.

    
wim 27.12.2013, 17:55
quelle

1 Antwort

0

doctests können unterschiedliche Ausgaben zwischen Python 2.x und 3.x liefern, genau für solche Fälle, aber natürlich würden andere Beispiele die std-lib APIs ändern.

Die beste Wette, wie schon jemand in den Kommentaren zu Ihrer Frage bemerkt hat, besteht darin, Wege zu finden, Doctest-Ergebnisse zu erzeugen, die über 2.x und 3.x konsistent sind.

Beachten Sie bei Ihrem speziellen Beispiel, dass die Definition einer Python long Ganzzahl abhängig von Architektur und Interpreter ist. Ein schöner 128-Bit-Cray-Supercomputer würde das Ergebnis von fib(100) gerne als reguläre Ganzzahl betrachten. Also, ob Sie ein L oder nicht am Ende des Wertes erhalten, ist subtiler als nur 2.x vs 3.x - obwohl Sie Recht haben, dass in 3.x L wird jetzt nie angezeigt.

    
IanSR 23.01.2014, 21:02
quelle

Tags und Links