L'exécution d'un test spécifique de cas dans Django lorsque votre application dispose d'un répertoire tests
La documentation de Django (http://docs.djangoproject.com/en/1.3/topics/testing/#running-tests) dit que vous pouvez exécuter des cas de test en les précisant:
$ ./manage.py test animals.AnimalTestCase
Cela suppose que vous avez vos tests dans un tests.py fichier dans votre application Django. Si cela est vrai, alors cette commande fonctionne comme prévu.
J'ai mes tests pour une application Django dans un répertoire tests:
my_project/apps/my_app/
├── __init__.py
├── tests
│ ├── __init__.py
│ ├── field_tests.py
│ ├── storage_tests.py
├── urls.py
├── utils.py
└── views.py
La tests/__init__.py
fichier a une suite() fonction:
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
D'essayer de préciser un test individuel affaire soulève 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 de l'exception a dit:
$ ./manage.py test my_app.StorageTestCase
...
ValueError: Test label 'my_app.StorageTestCase' does not refer to a test
Comment puis-je spécifier un cas de test lors de mes tests sont en plusieurs fichiers?
Vous devez vous connecter pour publier un commentaire.
Caisse django-nez. Il vous permet de spécifier les tests à exécuter, comme:
ou comme indiqué dans les commentaires, utilisez la syntaxe:
another.test:TestCase
Depuis Django 1.6 vous pouvez exécuter un test complet de cas, ou un test, à l'aide de l'complet dot notation pour l'élément que vous souhaitez exécuter.
De test automatique de la découverte trouverez maintenant des tests dans un fichier qui commence par test dans le répertoire de travail, de sorte que la question que vous auriez à renommer vos fichiers, mais maintenant vous pouvez les garder à l'intérieur du répertoire que vous voulez. Si vous souhaitez utiliser des noms de fichier, vous pouvez spécifier un modèle (par défaut de Django test runner) avec l'indicateur d'option
--pattern="my_pattern_*.py"
.Donc, si vous êtes dans votre
manage.py
répertoire et que vous voulez exécuter le testtest_a
à l'intérieur deTestCase
sous-classeA
à l'intérieur d'un fichiertests.py
en vertu de l'application/moduleexample
vous feriez:Si vous ne voulez pas inclure une dépendance et sont dans Django 1.6 ou plus tard, c'est comment vous le faites.
Voir la documentation de Django pour plus d'informations
error: option --pattern not recognized
etinvalid command name
J'ai eu ce problème moi-même et trouve cette question, au cas où quelqu'un d'autre arrive, voici ce que j'ai dégoté. Le DjangoTestSuiteRuner utilise une méthode appelée build_test(étiquette) qui découvre ce cas de test à exécuter en fonction de l'étiquette. La recherche dans cette méthode, il s'avère qu'ils font un getattr() sur les "modèles" ou "test" du module. Cela signifie que si vous retournez une suite de testeur n'est pas à la recherche de vos cas de test dans la suite, on ne regarde que dans l'un de ces modules.
Un travail rapide de contournement consiste à utiliser
__init__.py
pour importer vos tests directement au lieu de définir une suite. Le fait une partie de "test" du module et donc build_test(étiquette) peut les trouver.Pour votre exemple ci-dessus,
tests/__init__.py
doit 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 alors cela ne fonctionne pas, mais pour ce cas.
Ce travail-
Mettez ce code dans votre __init__.py pour importer toutes les classes de test dans le package et des sous-paquets. Cela vous permettra d'exécuter des tests spécifiques sans manuellement l'importation de chaque fichier.
De même, pour votre suite de tests que vous pouvez simplement utiliser:
Maintenant, tout ce que vous avez à faire pour de nouveaux tests est de les écrire et assurez-vous qu'ils sont dans le dossier de tests. Pas plus ennuyeux de l'entretien des importations de!
J'ai aussi rencontré ce problème et au lieu d'utiliser django-nez j'ai suivi ce lien ici: http://www.pioverpi.net/2010/03/10/organizing-django-tests-into-folders/. Vous avez besoin de vous ouvrir init.py et l'importation de vos tests.
Ex dans init.py:
from unique_test_file import *