2011-01-21 14 views
20

Mis archivos de origen se encuentran bajo src y mis archivos de prueba se encuentran bajo pruebas. Cuando quiero ejecutar un archivo de prueba, digamos python myTest.py, aparece un error de importación: "Ningún módulo llamado ASourceModule.py".Python import src modules when running tests

¿Cómo importo todos los módulos de la fuente necesaria para ejecutar mis pruebas?

+1

duplicado posible de [Ejecución unittest con estructura de directorios prueba típica] (http://stackoverflow.com/questions/1896918/running-unittest-with- typical-test-directory-structure) – Asqiir

Respuesta

22

es necesario agregar que el directorio a la ruta:

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

Tal vez poner esto en un módulo si está utilizando mucho.

+0

Esto no es OS agnóstico. Consulte [la respuesta] (https://stackoverflow.com/a/34938623/1509695) para que el mismo código funcione tanto en Linux como en Windows. – matanster

0

La mejor solución (la más manejable) parece estar utilizando un virtualenv y setuptools/distribute para instalar una copia de seguridad de su paquete (src). De esa forma, tus pruebas se ejecutarán contra un sistema completamente "instalado".

12

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

Supongamos que la estructura de directorios es la siguiente:

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

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

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

Puede instalar la nariz con facilidad con easy_install o pip:

easy_install nose 

o

pip install nose 

nariz se extiende unittest en muchas más formas, para obtener más información al respecto se puede consultar su página web: https://nose.readthedocs.org/en/latest/

+0

+1 para "El' __init __. Py' en el directorio de pruebas es necesario si desea ejecutar las pruebas desde adentro. " –

3

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") 

Al añadir el directorio relativo directamente a sys.path no funcionó