Djangoでテストの起動時間を短縮する方法

Djangoでテストの起動時間を短縮する方法

こんばんはエンジニアの眠れない夜です。

Djangoでテストを書いて実行する時に実際にテストが走り始めるまでにデータベースを準備するのに時間がかかってしまいます。

Creating test database for alias 'default'...

というメッセージが表示されてから数秒〜数十秒かかります。

モデルの設定が増えれば増えるほどこの時間はどんどん長くなっていきます。

しかし、この時間を簡単に短縮できる方法があります。

Django のテストの起動時間を短縮する方法

普段はこのようにテストを実行するかと思います。

python manage.py test

これにオプションの --keepdb をつけてやるだけです。

python manage.py test --keepdb

前回テストを起動した時からモデルに変更を加えていなければこれでテストの起動時間を短縮できます。

どれくらい早くなるのかと言うと実際にテストが始まるまで20秒くらいかかっていたのが3秒くらいで起動できるようになりました。

keepdb というだけあってテスト実行後にデータベースを削除せずにそのままテスト用のデータベースを保持します。

そのため、毎回テスト実行時にデータベースを作成しなくていいよ起動時間が短くなるという仕組みのようです。

データベースを保持することで副作用も出るかと思いますのでテストの内容に合わせて使い分けてください。

まとめ

  • テスト実行時はオプションを指定する。 `–keepdb`
  • ただし、モデルに変更を加えていない場合に限る。

テストは何度も何度も実行するのでほんの小さな魔待ち時間でも合計すると結構な時間になります。

テストの起動時間が短くなると同じ時間でも何度もコードに変更を加えて実行できるので非常に嬉しいですね。

Djangoで開発している方の参考になれば幸いです。

※ 間違っているところなどありましたらご指摘くださいm(_ _)m

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください