Wie kann ein Python 2-Test fehlschlagen und dennoch keinen Unterschied in den Werten in der Fehlermeldung feststellen?
Ich verwende Python 2.7.9 unter Windows.
Ich habe eine UTF-8-codierte Python-Skriptdatei mit folgendem Inhalt:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'☃'
Ich bekomme einen merkwürdigen Fehler, wenn ich den doctest starte:
Failed example:
test_func()
Expected:
u'\u2603'
Got:
u'\u2603'
Ich sehe den gleichen Fehler ausgegeben, ob ich die doctests über die IDE, die ich normalerweise verwende (IDEA IntelliJ), oder über die Befehlszeile starte:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py
Ich habe die Zeilen unter @ kopieExpected
undGot
in WinMerge, um subtile Unterschiede in den Zeichen auszuschließen, die ich nicht erkennen konnte; es hat mir gesagt, dass sie identisch sind.
Allerdings, wenn ich die Befehlszeile erneut ausführen, aber die Ausgabe in eine Textdatei umleiten, wie folgt:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py > out.txt
Der Test schlägt immer noch fehl, aber die resultierende Fehlerausgabe ist etwas anders:
Failed example:
test_func()
Expected:
u'☃'
Got:
u'\u2603'
Wenn ich das entkoppelte Unicode-Literal in meinen doctest einfüge:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'\\u2603'
die Prüfung besteht. Aber soweit ich das beurteilen kann,u'\u2603'
undu'☃'
sollte das Gleiche ergeben.
Wirklich habe ich zwei Fragen zu dem fehlgeschlagenen Fall:
Ist eine der Darstellungen, die der Doktorand gibt (unterExpected
oderGot
) falsch für den Wert, den der Doctester für diesen Fall hat? (d. h.x != eval(repr(x))
)Wenn nicht, warum schlägt der Test fehl?