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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage