Kane Blueriver
Kane Blueriver

Reputation: 4268

Django testing wastes too much time on test database creating

We are try to cover tests on an old, big project which has more than 500 tables in database, and that waste too much time on database creating(more than 1 hour on my RMBP) and db migrations.

We are using PostgreSQL as the Database, cause some GIS about service needs it, so it's hard to use SQLite to replace it.

What I can do to decrease the time on testing preparation?

Upvotes: 1

Views: 421

Answers (2)

user554538
user554538

Reputation:

At some point I ended up creating a transaction management middleware that would intercept transaction calls so that all tests were run in a transaction, and then the transaction was rolled back at the end.

Another alternative is to have a binary database dump that gets loaded at the beginning of each test, and then the database is dropped and recreated between tests. After creating a good database, use xtrabackup to create a dump of it. Then, in a per-test setup function, drop and create the database, then use xtrabackup to load the dump. Since it's a binary dump it'll load fairly quickly.

Upvotes: 0

Reto Aebersold
Reto Aebersold

Reputation: 16644

You can use django-nose and reuse the database like this:

REUSE_DB=1 ./manage.py test

Be careful that your tests do not leave any junk in the DB. Have a look at the documentation for more info.

Upvotes: 2

Related Questions