Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Как использовать сообщения в unicode в assert-методах?

#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, дополню ответ.

Комментариев нет:

Отправить комментарий