Question: Django (1.2 beta) will reset the database(s) between every test that runs, meaning each test runs on an empty DB. However, the database(s) are not **flushed**. One of the effects of flushing the database is the `auto_increment` counters are reset.

Consider a test which pulls data out of the database by primary key:

```
class ChangeLogTest(django.test.TestCase):
    def test_one(self):
        do_something_which_creates_two_log_entries()
        log = LogEntry.objects.get(id=1)
        assert_log_entry_correct(log)
        log = LogEntry.objects.get(id=2)
        assert_log_entry_correct(log)

```

This will pass because only two log entries were ever created. However, if another test is added to `ChangeLogTest` and it happens to run **before** `test_one`, the primary keys of the log entries are no longer 1 and 2, they might be 2 and 3. Now `test_one` fails.

This is actually a two part question:

1. Is it possible to force `./manage.py test` to flush the database between each test case?
2. Since Django doesn't flush the DB between each test by default, maybe there is a good reason. Does anyone know?

Answer: 
> 
> is it possible to force ./manage.py test to flush the database between each test case?
> 
> 
> 

Have a look on the implementation of the command of django.core.management.commands.flush.py.

You can call the flush command from inside your test call (maybe in TestCase.setUp):

```
management.call_command('flush')

```

> 
> maybe there is a good reason. Does anyone know?
> 
> 
> 

Yes there is: Speed up. Flushing and reloading many data from json takes a while...

Maybe you should have a look on [TransactionTestCase](http://docs.djangoproject.com/en/dev/topics/testing/#django.test.TransactionTestCase)
You can also use [TransactionTestCase.reset\_sequences](https://docs.djangoproject.com/en/2.1/topics/testing/advanced/#django.test.TransactionTestCase.reset_sequences):

> 
> Setting **reset\_sequences = True** on a TransactionTestCase will make sure sequences are always reset before the test run:
> 
> 
> 
> ```
> class TestsThatDependsOnPrimaryKeySequences(TransactionTestCase):
>     reset_sequences = True
> 
>     def test_animal_pk(self):
>         lion = Animal.objects.create(name="lion", sound="roar")
>         # lion.pk is guaranteed to always be 1
>         self.assertEqual(lion.pk, 1)
> 
> ```
> 
>