3

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 自身のテストの場合です。

4

0 に答える 0