Python Unittest断言错误和编码
我正在尝试为我的flask应用程序编写一个简单的测试。这个应用程序是西里尔文的Python Unittest断言错误和编码,python,unit-testing,encoding,flask,assert,Python,Unit Testing,Encoding,Flask,Assert,我正在尝试为我的flask应用程序编写一个简单的测试。这个应用程序是西里尔文的 def test_empty(self): res = self.app.get('/') assert 'В базе нет ссылок.' in res.data 当我尝试运行此测试时,我得到 FAIL: test_empty (__main__.LinkTestCase) -----------------------------------------------------------
def test_empty(self):
res = self.app.get('/')
assert 'В базе нет ссылок.' in res.data
当我尝试运行此测试时,我得到
FAIL: test_empty (__main__.LinkTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "tests.py", line 17, in test_empty
assert 'ðÆ ð▒ð░ðÀðÁ ð¢ðÁÐé ÐüÐüÐïð╗ð¥ð║.' in res.data
AssertionError
似乎编码有问题
有人能给我解释一下这个问题的性质吗
我在Windows 7上使用python2.7.3您使用的是字节字符串,内容将完全取决于您如何保存源代码。在处理文本时,通常要避免使用ByTestRing,请改用Unicode字符串。请参阅,另一种可能是,当Python回荡源代码行时,您的控制台误解了该行中的字节。@MartijnPieters嗯,我尝试使用
unicode(str)
和u'str'
,但都没有成功。我的源文件中还有一个#-*-编码:utf-8-*-
。如果您实际使用了该编解码器来保存文件,编码行会有所帮助(但要生成仍然可以解释为utf-8且不引发异常的内容将更加困难)。如果u'…'
在这里没有帮助,那么是您的控制台配置错误。UTF-8数据是打印出来的,但控制台在不同的编解码器中解释字节。@MartijnPieters我刚刚尝试从不同的代码块中记录另一个西里尔字母字符串,是的,你是对的,我的控制台有问题。但是这种“视觉缺陷”如何影响测试结果呢?断言如何依赖于控制台编码?