DB create → migrate → drop する回数を減らして高速化しよう!という話。
Djangoでアプリケーションを作っていて、Djangoが複数Appを持っている場合テストを実行するときに
$ python manage.py test app1/
$ python manage.py test app2/
$ python manage.py test app3/
$ python manage.py test app4/
のように実行することが多い。
これだと4回テスト用DBを作ったり消したりすることになって、migrationファイルが大量にある場合にはこれだけで5分とかかかったりする。
Django 1.8から test
コマンドのオプションに --keepdb というものがあって、このオプションを付けるとDBがない場合には新しく作って、既に存在する場合にはそのDBを使用してテストしてくれる。
テスト後にDBを消す必要がある場合には
$ python manage.py test --keepdb app1/
$ python manage.py test --keepdb app2/
$ python manage.py test --keepdb app3/
$ python manage.py test --keepdb app4/
の後にDBを消す処理を入れる必要がある。
ただ、大抵CI環境など使い捨ての環境でテストを実行することが多いので、そのままDBを放置しておけば良いと思う。