我有一个函数,可以在内部使用unicode,我想使用py.test测试它。目前,我有以下代码:
def test_num2word():
assert num2word(2320) == u"dva tisíce tři sta dvacet"但是,断言失败,出现以下错误:
E assert u'dva tis\xed...i sta dvacet ' == u'dva tis\xc3\...9i sta dvacet'
E - dva tis\xedce t\u0159i sta dvacet
E ? ^ ^ -
E + dva tis\xc3\xadce t\xc5\x99i sta dvacet
E ?据我所知,我的函数正确地返回unicode,然后尝试将其与utf-8编码的字符串进行比较,这显然是失败的。然而,我认为在我的源代码中使用u"..."也可以将字符串转换为Python内部使用的相同编码。
我的问题是,有没有一种比较它们的合理方法,或者我需要在每个测试语句中添加一个decode('utf-8') (在右边)或一个encode('utf-8') (在左边)。即使我编写了一个包装器函数,这对我来说也不是很理想--一定有一种方法可以比较清楚!不,使用Python 3不是一个选择。
发布于 2013-09-15 19:13:03
你的错误并不清楚,但看起来像是;
assert u'dva tis\xed...i sta dvacet ' == u'dva tis\xc3\...9i sta dvacet'这两个字符串的前面都有u,所以它们都是unicode字符串。但其中一个包含损坏的内容:dva tisÃce tÅi sta dvacet。
如果这个字符串是从您的测试py文件中获得的,那么问题是源代码本身并没有使用与您保存它时相同的编码来读取。这可以通过两种方式来解决:
在文本编辑器中将
# -*- coding: utf-8 -*-行(请参阅源代码中的this question.assert num2word(2320) == u‘’dva\u00edce t\u0159i sta dvacet'
(*:它们以什么编码存储在内存中是一个很长的故事,但作为Python程序员,这并不是您通常需要担心的问题。)
https://stackoverflow.com/questions/18790783
复制相似问题