In der Django-Dokumentation ( http://docs.djangoproject.com/de/1.3/topics/testing/#running-tests ) heißt es, dass Sie einzelne Testfälle ausführen können, indem Sie sie angeben:
$ ./manage.py test animals.AnimalTestCase
Dies setzt voraus, dass Sie Ihre Tests in einer tests.py-Datei in Ihrer Django-Anwendung haben. Wenn dies zutrifft, funktioniert dieser Befehl wie erwartet.
Ich habe meine Tests für eine Django-Anwendung in einem Testverzeichnis:
my_project/apps/my_app/
├── __init__.py
├── tests
│ ├── __init__.py
│ ├── field_tests.py
│ ├── storage_tests.py
├── urls.py
├── utils.py
└── views.py
Die tests/__init__.py
Datei hat eine suite () Funktion:
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)
Um die Tests durchzuführen, mache ich:
$ ./manage.py test my_app
Der Versuch, einen einzelnen Testfall anzugeben, löst eine Ausnahme aus:
$ ./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
Ich habe versucht, das zu tun, was in der Ausnahmemeldung stand:
$ ./manage.py test my_app.StorageTestCase
...
ValueError: Test label 'my_app.StorageTestCase' does not refer to a test
Wie spezifiziere ich einen einzelnen Testfall, wenn sich meine Tests in mehreren Dateien befinden?