抽象的な User モデルがあります。
テストには、この抽象モデルのサブクラス化と、サブクラス化されたモデルへの AUTH_USER_MODEL の設定が含まれます。
AUTH_USER_MODEL の問題は、「app-name.model-name」の形式でなければならないため、models.py
ファイル内のモデルを参照する必要があることです。しかし、それがmodels.py
ファイル内にある場合は、実稼働データベースに同期されます。これはまったく有害ではありませんが、そうでない場合は便利です.
私はDjango: How to create a model dynamic just for testing を見てきましたが、答えはハックっぽい (そして信頼できない?)
現在、私がしていることは次のとおりです。
[アプリ]/models.py:
# this model only gets created during a test
if 'test' in sys.argv:
class AccountTest(AbstractAccount):
pass
[apps] /tests/init.py内:
@override_settings(
AUTH_USER_MODEL = '[apps].AccountTest',
)
class AccountManagerTest(TransactionTestCase):
誰かがより良い方法を持っていますか?これはかなりハックな気がします。また、このアプローチに問題はありますか?