2017-08-21 2 views
0

Je tente d'exécuter un sous-ensemble de tests dans le cadre d'une construction; mais je suis incapable d'exécuter des tests individuels avec python3 -m unittest <test>python -m unittest spécifiant des tests et/ou des modules au lieu de découvrir

J'ai essayé de suivre les docs et lire aussi par: Running unittest with typical test directory structure mais ai toujours pas de chance

Structure des répertoires comme ceci:

new_project 
├── new_project 
├──── __init__.py 
├──── pipeline.py 
├── regression_tests 
├──── __init__.py 
├──── helpers.py 
├──── test_pipeline.py 
└──── test_connectivity.py 

Exécution python3 -m unittest discover au niveau new_project niveau exécute tous les tests très bien; mais en essayant d'exécuter un sous-ensemble échoue maintenant importe comment j'essaie de couper:

python3 -m unittest regression_tests 

Avec le résultat: Ran 0 tests in 0.000s

python3 -m unittest regression_tests.test_pipeline 
python3 -m unittest regression_tests.test_pipeline.TestClass 
python3 -m unittest regression_tests.test_pipeline.TestClass.test_method 
--- or --- 
python3 -m unittest regression_tests/test_pipeline.py 

Avec les erreurs: AttributeError: 'module' object has no attribute 'test_pipeline'

Enfin pour être complet cette tentative échoue également (comme je m'attendrais à ce que le PYTHONPATH soit mal réglé):

cd regression_tests 
python3 -m unittest test_pipeline 

avec l'erreur: ImportError: No module named 'regression_tests' (erreur jeté sur la ligne from regression_tests.helpers import helper_method)

Je ne pense pas que je fais tout ce qui est non standard ici. Pourquoi est-ce que unittest discover fonctionne mais que unittest <test> échoue?

Répondre

0

Pour exécuter correctement les cas de test de sous-répertoire, vous devez spécifier le répertoire à l'aide de la commande ci-dessous.

python -m unittest discover -s directoryname -p "test_*" 
+0

Cela fonctionne pour les cas simples, donc devrait me dépanner. Il ne résout pas le problème sous-jacent mais c'est pourquoi 'python -m unittest ' sans détection ne fonctionne pas comme il le devrait dans les docs. Dans mon cas plus général, cela ne va pas évoluer facilement car je vais devoir passer quelques cerceaux pour obtenir la regex pour '-p" test _ * "' pour couvrir tous les cas. – David258

+0

python -m unittest Fonctionne pour tous les cas de test contenus dans un fichier. Si vous souhaitez exécuter tous les cas de test d'un sous-répertoire, vous devez utiliser le mot clé discover. –

+0

Le problème que j'ai est-il * ne * fonctionne pas; J'essaie de faire seulement quelques tests, mais j'ai des erreurs chaque fois que j'essaie. Les docs disent: 'Exemples: python3 -m unittest test_module # exécute des tests depuis le module_module python3 -m unittest module.TestClass # exécute des tests depuis module.TestClass python3 -m unittest module.Class.test_method # exécute la méthode de test spécifiée' mais comme ci-dessus j'obtiens une erreur d'attribut quand j'essaye ceci – David258