La documentation Django ( http://docs.djangoproject.com/en/1.3/topics/testing/#running-tests ) indique que vous pouvez exécuter des cas de test individuels en les spécifiant:
$ ./manage.py test animals.AnimalTestCase
Cela suppose que vous ayez vos tests dans un fichier tests.py dans votre application Django. Si cela est vrai, cette commande fonctionne comme prévu.
J'ai mes tests pour une application Django dans un répertoire de tests:
my_project/apps/my_app/
├── __init__.py
├── tests
│ ├── __init__.py
│ ├── field_tests.py
│ ├── storage_tests.py
├── urls.py
├── utils.py
└── views.py
Le tests/__init__.py
fichier a une fonction suite ():
import unittest
from my_project.apps.my_app.tests import field_tests, storage_tests
def suite():
tests_loader = unittest.TestLoader().loadTestsFromModule
test_suites = []
test_suites.append(tests_loader(field_tests))
test_suites.append(tests_loader(storage_tests))
return unittest.TestSuite(test_suites)
Pour exécuter les tests que je fais:
$ ./manage.py test my_app
Essayer de spécifier un cas de test individuel déclenche une exception:
$ ./manage.py test my_app.tests.storage_tests.StorageTestCase
...
ValueError: Test label 'my_app.tests.storage_tests.StorageTestCase' should be of the form app.TestCase or app.TestCase.test_method
J'ai essayé de faire ce que le message d'exception disait:
$ ./manage.py test my_app.StorageTestCase
...
ValueError: Test label 'my_app.StorageTestCase' does not refer to a test
Comment spécifier un cas de test individuel lorsque mes tests sont dans plusieurs fichiers?
la source
another.test:TestCase
Depuis Django 1.6, vous pouvez exécuter un cas de test complet, ou un test unique, en utilisant la notation par points complète pour l'élément que vous souhaitez exécuter.
La découverte de test automatique trouvera désormais des tests dans tous les fichiers commençant par test sous le répertoire de travail.Pour répondre à la question, vous devrez renommer vos fichiers, mais vous pouvez maintenant les conserver dans le répertoire de votre choix. Si vous souhaitez utiliser des noms de fichiers personnalisés, vous pouvez spécifier un modèle (lanceur de test Django par défaut) avec l'option flag
--pattern="my_pattern_*.py"
.Donc, si vous êtes dans votre
manage.py
répertoire et que vous souhaitez exécuter le testtest_a
dans laTestCase
sous-classeA
dans un fichiertests.py
sous l'application / module,example
vous feriez:Si vous ne voulez pas inclure de dépendance et que vous êtes dans Django 1.6 ou version ultérieure, c'est comme ça que vous faites.
Consultez la documentation Django pour plus d'informations
la source
error: option --pattern not recognized
etinvalid command name
J'avais moi-même ce problème et j'ai trouvé cette question, au cas où quelqu'un d'autre viendrait, voici ce que j'ai déterré. Le DjangoTestSuiteRuner utilise une méthode appelée build_test (label) qui détermine les cas de test à exécuter en fonction de l'étiquette. En examinant cette méthode, il s'avère qu'ils font un getattr () sur le module "models" ou "test". Cela signifie que si vous retournez une suite, le testeur ne recherche pas vos cas de test dans cette suite, il ne recherche que dans l'un de ces modules.
Une solution rapide consiste à utiliser
__init__.py
importer vos tests directement au lieu de définir une suite. Le les fait partie du module "test" et ainsi build_test (label) peut les trouver.Pour votre exemple ci-dessus,
tests/__init__.py
devrait simplement contenir:Ce n'est pas très élégant et bien sûr si vous essayez de faire quelque chose de plus compliqué avec votre suite, cela ne fonctionnera pas, mais ce serait le cas dans ce cas.
la source
Cela devrait fonctionner-
la source
J'ai également rencontré ce problème et au lieu d'utiliser django-nose j'ai suivi ce lien ici: http://www.pioverpi.net/2010/03/10/organizing-django-tests-into-folders/ . Vous devez ouvrir votre init .py et importer vos tests.
Ex dans init .py:
from unique_test_file import *
la source
Mettez ce code dans votre __init__.py et il importera toutes les classes de test dans le package et les sous-packages. Cela vous permettra d'exécuter des tests spécifiques sans importer manuellement chaque fichier.
De même, pour votre suite de tests, vous pouvez simplement utiliser:
Maintenant, tout ce que vous avez à faire pour les nouveaux tests est de les écrire et de vous assurer qu'ils sont dans le dossier tests. Fini l'entretien fastidieux des importations!
la source