为了账号安全,请及时绑定邮箱和手机立即绑定

从 python unittest 获取 unicode 输出

从 python unittest 获取 unicode 输出

一只甜甜圈 2021-06-27 17:10:21
我有以下测试:# -*- coding: utf-8 -*-import unittestclass 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字符?
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

你还在使用 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)


查看完整回答
反对 回复 2021-07-06
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果您需要在 Python2 上使用它,我发现解决问题的唯一方法是强制系统的编码为utf-8:


reload(sys)

sys.setdefaultencoding('utf-8')


查看完整回答
反对 回复 2021-07-06
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信