私もこの問題を抱えていました。私はdj-inmemorystorage
を使ってはるかに速いテストを得ました。
from settings import *
DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'
...とテストを実行する./manage.py test --settings=project.test_settings
を呼び出す:この設定の
簡単な方法は、あなたの設定と同じフォルダ内にtest_settings.py
を作成することです。 project/test_runner.py
で
:
私の好ましい方法は、カスタムのテストランナーを設定することです
from django.conf import settings
from django.test.runner import DiscoverRunner
class FastTestRunner(DiscoverRunner):
def setup_test_environment(self):
super(FastTestRunner, self).setup_test_environment()
# Don't write files
settings.DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'
# Bonus: Use a faster password hasher. This REALLY helps.
settings.PASSWORD_HASHERS = (
'django.contrib.auth.hashers.MD5PasswordHasher',
)
注:それsignificantly improves User
creation timeので、これはまた、PASSWORD_HASHER
を設定します。 これは本番環境では設定しないでください。project/settings.py
で
:
TEST_RUNNER = 'project.test_runner.FastTestRunner'
要件:
pip install dj-inmemorystorage
UPDATE:dj-inmemorystorage
.
django-inmemorystorage
への変更UPDATE 2:django-discover-runner
が削除されました。これは現在djangoのデフォルトテストランナーになっており、PASSWORD_HASHER
関連のブログ記事へのリンクを修正しました。
私はカスタムStorageクラスを使用していて、フィールド内のこのモデル用に設定しています: models.FileField(storage = CustomS3Storage(...)) - 設定を入れ替えました本当にうまくいきません。 – erikcw
@erikcw:モデルのFileFieldストレージをTestCase setUp(またはテストモジュールレベルなど)に上書きすることはできます。 –