Получение вывода Unicode из Python Unittest - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий тест:

# -*- coding: utf-8 -*-
import unittest

class Tests(unittest.TestCase):
    #pylint:disable=invalid-name
    def test_string_matches(self):
        self.assertEqual(u'你好', u'好')

Это дает мне следующий вывод в оболочке:

======================================================================
FAIL: test_string_matches (test.Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 7, in test_string_matches
    self.assertEqual(u'你好', u'好')
AssertionError: u'\u4f60\u597d' != u'\u597d'
- \u4f60\u597d
? -
+ \u597d

однако, если я запускаю:

print '你好'

в терминале я получаю ожидаемый вывод: 你好

Есть ли способ получить python unittest для вывода фактических символов Юникода?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Если вам нужно, чтобы это работало на Python2, единственный способ, который я нашел, чтобы решить эту проблему, это принудительно установить кодирование системы на utf-8:

reload(sys)
sys.setdefaultencoding('utf-8')
0 голосов
/ 04 октября 2018

Есть ли причина, по которой вы все еще используете Python 2.x?Если вы переключитесь на Python 3.x, исключение будет отображаться так, как вы ожидаете.

$ python3 t.py
F
======================================================================
FAIL: test_string_matches (__main__.Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "t.py", line 7, in test_string_matches
    self.assertEqual(u'你好', u'好')
AssertionError: '你好' != '好'
- 你好
? -
+ 好


----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)
...