Python importer des modules src lors de l'exécution de tests

Mes fichiers source sont situés sous src et mes fichiers de test sont situés sous tests. Quand je veux exécuter un fichier de test, disons python myTest.py, je reçois une erreur d'importation: "aucun module nommé ASourceModule.py".

Comment importer tous les modules de la source nécessaires pour exécuter mes tests?

24
demandé sur Karan 2011-01-21 19:15:54

4 réponses

Vous devez ajouter ce répertoire au chemin:

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

Peut-être mettre cela dans un module si vous l'utilisez beaucoup.

27
répondu Thomas 2011-01-21 16:17:53

Si vous ne souhaitez pas ajouter le chemin source à chaque fichier de test ou modifier votre PYTHONPATH, vous pouvez utiliser nose pour exécuter les tests.

Supposons que votre structure de répertoire soit comme ceci:

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

, Vous devez importer le module normalement dans le test_module.py (par exemple, from package import module). Ensuite, exécutez les tests en exécutant nosetests dans le dossier du projet. Vous pouvez également exécuter des tests spécifiques en faisant nosetests tests/test_module.py.

Le __init__.py dans le tests répertoire est nécessaire si vous voulez exécuter les tests de l'intérieur il.

, Vous pouvez installer le nez facilement avec easy_install ou pip:

easy_install nose

Ou

pip install nose

Nose étend unittest de beaucoup plus de façons, pour en savoir plus à ce sujet, vous pouvez consulter leur site web: https://nose.readthedocs.org/en/latest/

13
répondu Anderson Vieira 2016-06-06 12:59:39

Sur mon système (Windows 10), je devais faire quelque chose comme ceci:

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

L'ajout du répertoire relatif directement à sys.path n'a pas fonctionné

4
répondu Frank Bryce 2016-01-24 02:04:15

La meilleure solution (la plus gérable) semble utiliser un virtualenv et setuptools / distribute pour installer une copie andebelopment de votre paquet (src). De cette façon, vos tests s'exécutent sur un système entièrement "installé".

0
répondu Barry Wark 2011-01-24 09:45:35