Как тестирование Python 2 может завершиться неудачей и при этом не иметь разницы в значениях в сообщении об ошибке?

Я использую Python 2.7.9 в Windows.

У меня есть файл сценария Python в кодировке UTF-8 со следующим содержимым:

# coding=utf-8

def test_func():
    u"""
    >>> test_func()
    u'☃'
    """
    return u'☃'

Я получаю любопытную ошибку, когда запускаю doctest:

Failed example:
    test_func()
Expected:
    u'\u2603'
Got:
    u'\u2603'

Я вижу эту же ошибку, независимо от того, запускаю ли я тесты документов через IDE, которую я обычно использую (IDEA IntelliJ), или из командной строки:

> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py

Я скопировал строки подExpected а такжеGot в WinMerge, чтобы исключить некоторую тонкую разницу в персонажах, которых я не смог обнаружить; это сказало мне, что они были идентичны.

Однако, если я переделываю командную строку, но перенаправляю вывод в текстовый файл, вот так:

> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py > out.txt

тест по-прежнему не проходит, но результат ошибки немного отличается:

Failed example:
    test_func()
Expected:
    u'☃'
Got:
    u'\u2603'

Если я добавлю экранированный литерал Юникода в моем тесте:

# coding=utf-8

def test_func():
    u"""
    >>> test_func()
    u'☃'
    """
    return u'\\u2603'

тест проходит. Но, насколько я могу судить,u'\u2603' а такжеu'☃' следует оценить к тому же.

На самом деле у меня есть два вопроса о неудачном случае:

Является ли одно из представлений, которые дает врач (подExpected или жеGot) неверно для значения, которое имеет doctester для этого случая? (Т.е.x != eval(repr(x)))Если нет, то почему тест не пройден?

Ответы на вопрос(0)

Ваш ответ на вопрос