import tempfile import pytest from django.core.management import call_command from django.test import override_settings @pytest.fixture(scope='session', autouse=True) def collected_static_files(): """{% static %} (usado en pattern.html/pattern_detail.html) necesita el manifest que genera collectstatic cuando STORAGES['staticfiles'] es CompressedManifestStaticFilesStorage (ver base.py); sin esto, cualquier test que renderice una de esas plantillas falla con "Missing staticfiles manifest entry". Se recopila a un directorio temporal (no al STATIC_ROOT real del proyecto) para no depender de ―ni tocar― lo que ya haya en config/static/.""" with tempfile.TemporaryDirectory() as static_root: with override_settings(STATIC_ROOT=static_root): call_command('collectstatic', interactive=False, verbosity=0) yield @pytest.fixture(scope='session', autouse=True) def isolated_media_root(): """Los tests que suben imágenes (PatternImage, portada de Pattern...) escriben de verdad en MEDIA_ROOT; sin aislarlo, se acumulan en la carpeta media/ real del proyecto de una ejecución a otra, y como cover_image.py guarda cada variante con un nombre fijo (thumbnail.jpg, large.jpg) dentro de una carpeta por mes, esas sobras podían chocar con los nombres que espera un test concreto (ver PatternCoverImageUploadViewTests) y hacerlo fallar según lo que hubiera quedado de ejecuciones anteriores.""" with tempfile.TemporaryDirectory() as media_root: with override_settings(MEDIA_ROOT=media_root): yield