DjangoでPytestやるTips
仕事でDjangoやる時に、参画したての人が最初から知っておいた方が良さそうな事柄がまとまってきたので残しておきます。
pytest-djangoの機能
--no-migrations
これは、テスト用のテーブルを構築するためのオプションです。このオプションをつけると 定義されているモデルを元にテーブルが作成されます。 Djangoではテストを実行する際に、データベースを作り直します。その際、マイグレーションファイルをもとにテーブルを構成します。 マイグレーションファイルの数が多いと、1つ1つ適用するためテストが実行されるまでに時間がかかります。 このオプションをつけると、モデル定義から読み取って一気にテーブルを用意するので、オプションなしに比べてテーブルの作成が早くなります。
--reuse-db
Djangoでは通常テストを実行するたびにデータベースを作り直すところ このオプションをつけると、前回のテストで作成したデータベースを再利用します。 テーブルを作成する時間分、テストの実行時間が早くなります。 ただし、テスト実行前後でモデルの定義を変えているとテストが落ちるので その時はデータベースを作り直さないといけません。
pytestの機能でDjangoで開発する時に知っていると便利なやつ
filterwarnings
pytest.ini
に書く設定です。Django4系でurls.py
に書くurl()
がなくなります。テストを実行すると、url()
を使っている数だけwarningが表示されます。
url()
をpath()
に変えればwarningは解消されますが、たくさんのurl()
をすぐには変えることができない場合、filterwarnings
にRemovedInDjango40Warning
を無視する設定を書けば
warningが表示されなくなります。この設定を書けば、他の4系のdeprecatedエラーも表示されなくなります。
pytest.ini
[pytest] filterwarnings = ignore::django.utils.deprecation.RemovedInDjango40Warning