unittest unit tests test run modules examples example español assertraises python unit-testing import

unit - Python importa módulos src al ejecutar pruebas



unittest python 3 (4)

Mis archivos de origen se encuentran en src y mis archivos de prueba se encuentran en pruebas. Cuando quiero ejecutar un archivo de prueba, diga python myTest.py, aparece un error de importación: "No hay un módulo llamado ASourceModule.py".

¿Cómo importo todos los módulos de origen necesarios para ejecutar mis pruebas?


En mi sistema (Windows 10), tuve que hacer algo como esto:

import sys import os sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")

Anexar el directorio relativo directamente a sys.path no funcionó


La mejor solución (la más manejable) parece estar usando un virtualenv y setuptools / distrib para instalar y copiar copia de su paquete (src). De esa manera sus pruebas se ejecutan contra un sistema completamente "instalado".


Necesitas agregar ese directorio a la ruta:

import sys sys.path.append(''../src'')

Tal vez ponga esto en un módulo si lo está usando mucho.


Si no desea agregar la ruta de origen a cada archivo de prueba o cambiar su PYTHONPATH , puede usar la nose para ejecutar las pruebas.

Supongamos que la estructura de su directorio es así:

project package __init__.py module.py tests __init__.py test_module.py

Normalmente debe importar el módulo en el test_module.py (por ejemplo, from package import module ). A continuación, ejecute las pruebas ejecutando nosetests en la carpeta del proyecto. También puede ejecutar pruebas específicas realizando las pruebas de nosetests tests/test_module.py .

El __init__.py en el directorio de tests es necesario si desea ejecutar las pruebas desde dentro.

Puedes instalar la nariz fácilmente con easy_install o pip :

easy_install nose

o

pip install nose

nose extiende unittest de muchas más maneras, para obtener más información al respecto, puede consultar su sitio web: nose