0

抽象的な 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):

誰かがより良い方法を持っていますか?これはかなりハックな気がします。また、このアプローチに問題はありますか?

4

1 に答える 1

1

テスト環境用に別の設定ファイルを使用することをお勧めします。INSTALLED_APPSこれらのテスト設定の にのみリストされているアプリケーションを作成し、そこにテスト モデルを実装することができます。このアプローチは、たとえば、nose を使用してテストを実行する場合などにも適しています。次に、次のようにテストを実行する必要があります。

python manage.py test --settings=my_project.test_settings
于 2013-10-24T15:38:39.773 に答える