猿问

从 python unittest 获取 unicode 输出

我有以下测试:


# -*- coding: utf-8 -*-

import unittest


class Tests(unittest.TestCase):

    #pylint:disable=invalid-name

    def test_string_matches(self):

        self.assertEqual(u'你好', u'好')

这给了我 shell 中的以下输出:


======================================================================

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输出实际的unicode字符?


一只甜甜圈
浏览 150回答 2
2回答

白衣染霜花

你还在使用 Python 2.x 有什么理由吗?如果您切换到 Python 3.x,则异常将以您期望的方式显示。$ python3 t.pyF======================================================================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.000sFAILED (failures=1)

蓝山帝景

如果您需要在 Python2 上使用它,我发现解决问题的唯一方法是强制系统的编码为utf-8:reload(sys)sys.setdefaultencoding('utf-8')
随时随地看视频慕课网APP

相关分类

Python
我要回答