TL;DR:
使いたくない@skipIfCustomUser
どうすればいいですか?
Django はカスタム ユーザー モデルを で定義できるようにしており、 docs で現在の (スワップされた)モデルを参照するためにsettings.py
を使用する必要があると述べています。get_user_model()
User
さらに、ドキュメントは親切に次のように言っています。
User モデルと対話するアプリケーションを作成している場合は、いくつかの予防策を講じる必要があります...
テスト スイートがすべてのプロジェクト構成に確実に合格するようにするには、デコレータを
django.contrib.auth.tests.utils
定義します。@skipIfCustomUser
このデコレーターは、テスト ケースをスキップさせます ...
私には、ますます多くの Django プロジェクトがカスタム ユーザー モデルを持っていることを期待するのが妥当に思えます。そのため、これらのプロジェクトに対しても自分のアプリをテストできるようにしたいと考えています。
しかし、どうすればそれができますか?
参考までに、すべてが失敗する場所は次のとおりです。
def setUp(self):
from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.create_user(
'test_username',
'test_username@example.com',
'da_password') # BAM!
ユーザーモデルがusername
フィールドを定義していない場合、最後の行は失敗します。これは、CustomUser
たとえばDjango 自身のテストの場合です。