2011-01-21 10 views
20

I file di origine si trovano sotto src ei miei file di test si trovano sotto i test. Quando voglio eseguire un file di test, ad esempio python myTest.py, viene visualizzato un errore di importazione: "Nessun modulo denominato ASourceModule.py".Python importa i moduli src durante l'esecuzione dei test

Come si importano tutti i moduli dall'origine necessaria per eseguire i miei test?

+1

Eventuali duplicati di [esecuzione unittest con la tipica struttura di directory test] (http://stackoverflow.com/questions/1896918/running-unittest-with- tipico-test-directory-structure) – Asqiir

risposta

22

È necessario aggiungere quella directory al percorso:

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

Forse mettere questo in un modulo se si utilizza un sacco.

+0

Questo non è agnostico del sistema operativo. Vedere [la risposta] (https://stackoverflow.com/a/34938623/1509695) per far sì che lo stesso codice funzioni sia su Linux che su Windows. – matanster

0

La soluzione migliore (più gestibile) sembra utilizzare un virtualenv e setuptools/distribute per installare e aggiungere una copia del pacchetto (src). In questo modo i test vengono eseguiti su un sistema completamente "installato".

12

Se non si desidera aggiungere il percorso di origine a ciascun file di prova o modificare PYTHONPATH, è possibile utilizzare nose per eseguire i test.

Supponiamo che la vostra struttura di directory è come questo:

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

Si dovrebbe importare il modulo normalmente nel test_module.py (ad esempio from package import module). Quindi eseguire i test eseguendo nosetests nella cartella del progetto. Puoi anche eseguire test specifici eseguendo nosetests tests/test_module.py.

La directory tests è necessaria nella directory tests se si desidera eseguire i test dall'interno.

È possibile installare il naso facilmente con easy_install o pip:

easy_install nose 

o

pip install nose 

naso si estende unittest in molti altri modi, per saperne di più su di esso è possibile controllare il loro sito web: https://nose.readthedocs.org/en/latest/

+0

+1 per "Il' __init __. Py' nella directory dei test è necessario se vuoi eseguire i test da dentro. " –

3

Sul mio sistema (Windows 10), mi è stato richiesto di fare qualcosa di simile:

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

Aggiunta la directory relativa direttamente a sys.path non ha funzionato

Problemi correlati