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