Acabo de tener este problema también. Obtuve pruebas mucho más rápidas usando dj-inmemorystorage
.
La forma más rápida de configurar esto es mediante la creación de un test_settings.py
en la misma carpeta que la configuración:
from settings import *
DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'
... ./manage.py test --settings=project.test_settings
y llamando a ejecutar las pruebas.
Mi forma preferida es la creación de un corredor de prueba personalizada:
En 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',
)
Nota: Esto también establece el PASSWORD_HASHER
, porque significantly improves User
creation time. Esto NO se debe establecer en producción.
En project/settings.py
:
TEST_RUNNER = 'project.test_runner.FastTestRunner'
Los requisitos:
pip install dj-inmemorystorage
ACTUALIZACIÓN: cambiado de django-inmemorystorage
a dj-inmemorystorage
.
ACTUALIZACIÓN 2: Se eliminó django-discover-runner
, ya que ahora es el corredor de prueba predeterminado en django, y se corrigió el enlace a la publicación de blog relacionada PASSWORD_HASHER
.
Debería haber mencionado anteriormente, estoy usando una clase de Almacenamiento personalizada y configurándola solo para este modelo en el campo: modelos .FileField (storage = CustomS3Storage (...)) - así que intercambiando la configuración ganada Realmente funciona – erikcw
@erikcw: aún puede sobrescribir el almacenamiento de FileField de su modelo en la configuración de TestCase (o en el nivel de módulo de prueba, etc.). –