Я использую Python 2.7.9 в Windows.
У меня есть файл python script с кодировкой 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'
Если я помещаю листинг unicode unicode в мой doctest:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'\\u2603'
проходит тест. Но, насколько я могу судить, u'\u2603'
и u'☃'
должны оценивать одно и то же.
На самом деле у меня есть два вопроса о неудачном случае:
- Является ли одно из представлений, которое дает докторант (под
Expected
илиGot
), неверно для значения, которое имеет доктритель для этого случая? (т.е.x != eval(repr(x))
) - Если нет, то почему сбой теста?