#python #кодировка #юнит_тесты #unicode
Не могу добиться, чтобы методы assert корректно выводили сообщения в юникоде:
# coding=utf-8
from unittest import TestCase
class Example(TestCase):
def test_mcve(self):
message = u'Привет, мир!'
print message
self.assertTrue(False, message)
Результат выполнения:
Testing started at 17:07 ...
Привет, мир!
Failure
Traceback (most recent call last):
File "/home/n.volynkin/example/mcve.py", line 9, in test_mcve
self.assertTrue(False, message)
AssertionError: \u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!
То есть просто так строка корректно выводится в stdout, а из ассерта - ломается юникод.
Как получить нормальные строки?
Ответы
Ответ 1
Совершенно неожиданно я нашёл ответ: class Example(TestCase): def test_mcve(self): message = u'Привет, мир!' print message self.assertTrue(False, message.encode('utf-8')) Источник: https://stackoverflow.com/a/14181711/2790048 Когда пойму магию юникода в Python, дополню ответ.
Комментариев нет:
Отправить комментарий