¿Cómo puede fallar un doctest de python 2 y, sin embargo, no tener diferencias en los valores del mensaje de error?
Estoy usando Python 2.7.9 en Windows.
Tengo un archivo de script python codificado en UTF-8 con los siguientes contenidos:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'☃'
Me da un curioso fracaso cuando ejecuto el doctest:
Failed example:
test_func()
Expected:
u'\u2603'
Got:
u'\u2603'
Veo este mismo resultado de falla si inicio los doctests a través del IDE que uso generalmente (IDEA IntelliJ), o desde la línea de comandos:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py
Copié las líneas debajoExpected
yGot
en WinMerge para descartar una sutil diferencia en los personajes que no pude detectar; Me dijo que eran idénticos.
Sin embargo, si vuelvo a ejecutar la línea de comando, pero redirijo la salida a un archivo de texto, así:
> x:\my_virtualenv\Scripts\python.exe -m doctest -v hello.py > out.txt
la prueba todavía falla, pero la salida de falla resultante es un poco diferente:
Failed example:
test_func()
Expected:
u'☃'
Got:
u'\u2603'
Si pongo el literal unicode escapado en mi doctest:
# coding=utf-8
def test_func():
u"""
>>> test_func()
u'☃'
"""
return u'\\u2603'
La prueba pasa. Pero por lo que puedo decir,u'\u2603'
yu'☃'
debe evaluar a lo mismo.
Realmente tengo dos preguntas sobre el caso fallido:
Es una de las representaciones que el doctester está dando (bajoExpected
oGot
) incorrecto para el valor que tiene el doctester para ese caso? (es decir.x != eval(repr(x))
)Si no, ¿por qué falla la prueba?