Como pode um doctest do python 2 falhar e ainda não ter diferença nos valores na mensagem de falha?
Estou usando o Python 2.7.9 no Windows.
Eu tenho um arquivo de script python codificado em UTF-8 com o seguinte conteúdo:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'☃'
Recebo uma falha curiosa quando executo o doctest:
Failed example:
test_func()
Expected:
u'\u2603'
Got:
u'\u2603'
Vejo essa mesma falha ao iniciar os documentos através do IDE que normalmente uso (IDEA IntelliJ) ou na linha de comando:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py
Copiei as linhas sobExpected
eGot
no WinMerge para descartar alguma diferença sutil nos personagens que eu não conseguia identificar; me disse que eles eram idênticos.
No entanto, se refazer a linha de comando, mas redirecionar a saída para um arquivo de texto, da seguinte maneira:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py > out.txt
o teste ainda falha, mas a saída resultante da falha é um pouco diferente:
Failed example:
test_func()
Expected:
u'☃'
Got:
u'\u2603'
Se eu colocar o literal unicode escapado no meu doctest:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'\\u2603'
o teste passa. Mas até onde eu sei,u'\u2603'
eu'☃'
deve avaliar a mesma coisa.
Realmente, tenho duas perguntas sobre o caso que falhou:
É uma das representações que o doctester está dando (emExpected
ouGot
) incorreto para o valor que o doctester tem para esse caso? (ou seja,x != eval(repr(x))
)Caso contrário, por que o teste falha?