The Django documentation (http://docs.djangoproject.com/en/1.3/topics/testing/#running-tests) says that you can run individual test cases by specifying them:
$ ./manage.py test animals.AnimalTestCase
This assumes that you have your tests in a tests.py file in your Django application. If this is true, then this command works like expected.
I have my tests for a Django application in a tests directory:
my_project/apps/my_app/ ├── __init__.py ├── tests │ ├── __init__.py │ ├── field_tests.py │ ├── storage_tests.py ├── urls.py ├── utils.py └── views.py
tests/__init__.py file has a suite() function:
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)
To run the tests I do:
$ ./manage.py test my_app
Trying to specify an individual test case raises an 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
I tried to do what the exception message said:
$ ./manage.py test my_app.StorageTestCase ... ValueError: Test label 'my_app.StorageTestCase' does not refer to a test
How do I specify an individual test case when my tests are in multiple files?
Checkout django-nose. It allows you to specify tests to run like:
python manage.py test another.test:TestCase.test_method
or as noted in comments, use the syntax:
python manage.py test another.test.TestCase.test_method
Since Django 1.6 you can run a complete test case, or single test, using the complete dot notation for the element you want to run.
Automatic test discovery will now find tests in any file that starts with test under the working directory, so addressing the question you would have to rename your files, but you can now keep them inside the directory you want. If you want to use custom file names you can specify a pattern (default Django test runner) with the option flag
So if you are in your
manage.py directory and want to run the test
A inside a file
tests.py under the app/module
example you would do:
python manage.py test example.tests.A.test_a
If you don't want to include a dependency and are in Django 1.6 or later that's how you do it.