Unit Test Integration

By default, South’s syncdb command will also apply migrations if it’s run in non-interactive mode, which includes when you’re running tests - it will run every migration every time you run your tests.

If you want the test runner to use syncdb instead of migrate - for example, if your migrations are taking way too long to apply - simply set SOUTH_TESTS_MIGRATE = False in settings.py.

South’s own unit tests

South has its own set of unit tests, however, these will not be run by default when you run ./manage.py test. This is mainly because the test suite is meant to be run in isolation (the test framework continually changes INSTALLED_APPS and fiddles with the ORM as it runs, among other things), and can cause compatability problems with other applications.

You can run South’s test suite by setting SKIP_SOUTH_TESTS = False in settings.py, then running ./manage.py test south.