LoginSignup
5
6

More than 5 years have passed since last update.

Djangoのテストを高速化する

Posted at

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を放置しておけば良いと思う。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6