У меня есть файл README.rst
, содержащий несколько doctests для моей библиотеки Python. Все они работают, кроме последнего doctest, который выводит print
s Unicode, закодированный в UTF-8:
Here is a failing example::
>>> print(u'\xE5\xE9\xEE\xF8\xFC')
åéîøü
(Использование print
, а не просто строки, очень важно для моего фактического варианта использования, поскольку реальная строка содержит встроенные символы новой строки, и мне нужно показать, как выровнены элементы в разных строках.)
Выполнение pytest README.rst
успешно работает с Python 3.6.5 и pytest 3.6.1, но в Python 2.7.10 происходит сбой с очень длинной трассировкой, которая заканчивается:
input = 'åéîøü
', errors = 'strict'
def decode(input, errors='strict'):
> return codecs.utftox.ini
decode(input, errors, True)
E UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py:16: UnicodeEncodeError
Установка setenv = LC_ALL=en_US.UTF-8
в tox.ini
и запуск под tox ничего не меняет; также не добавляется doctest_encoding = utf-8
в раздел [pytest]
tox.ini
. Я не вижу вариантов doctest, имеющих отношение к моему тяжелому положению. Как мне добиться успешного запуска теста в Python 2.7?
Обновление: ошибка, вызывающая эту проблему, была исправлена в pytest 3.6.2.
print
. - person jwodder   schedule 14.06.2018