Tengo un setup.py que necesita para apoyar tanto Python 2 y 3.Las pruebas no están cubiertas por 2to3 en setup.py?
El código actualmente funciona y es instalable en Python 2.x
Si añado la cláusula use_2to3 = True
a mi setup.py, entonces el módulo puede ser instalado en Python 3, sin embargo, hacer un:
python setup.py test
causa un fracaso como una de las pruebas se utiliza la clase StringIO, y la línea de importación goofs en Python 3 (que es actualmente from StringIO import StringIO
, donde en Python3 debería ser from io import StringIO
Pensé sin embargo que una vez que agregaste la palabra clave use_2to3 todas las pruebas (incluyendo pruebas unitarias) fueron procesadas por 2to3 antes de ser probadas.
¿Qué me estoy perdiendo? En caso de que ayuda, la mayor parte de mi setup.py parece:
from setuptools import setup
setup(
name='myproject',
version='1.0',
description='My Cool project',
classifiers = [
'Programming Language :: Python',
'Programming Language :: Python :: 3',
],
py_modules=['mymodule'],
test_suite='test_mymodule',
zip_safe=False,
use_2to3 = True,
)
edición: la razón por la que siento como si 2to3 no está siendo ejecutado en un python setup.py test
es que explota & la parte inferior de la StackTrace lee:
File "/home/aparkin/temp/mymodule/test_mymodule.py", line 18, in <module>
from StringIO import StringIO
Pero si corría 2to3 en test_mymodule.py, después de que la línea de importación debería haber sido revisado a fin de:
from io import StringIO
Y (en el peor) las pruebas sólo debe ind ividualmente fallan
¿Qué quiere decir con el sub-paquete mymodule.tests? –
Me refiero a crear un paquete llamado "mymodule" y crear un directorio llamado "tests" y poner todos sus módulos de prueba debajo, recordando incluir un '__init __. Py' para que las pruebas sean un subpaquete de mymodule (de ahí mymodule.tests) – Iguananaut