Я столкнулся со следующим У меня есть модель, которая выглядит примерно так:
class Package(models.Model):
name = models.CharField(max_length=64)
file = models.FileField(upload_to="subdir",
storage=settings.PACKAGE_STORAGE,
null=True)
Важным в этом примере является аргумент storage =
конструктора FileField
. Он заполняется значением из ] settings.py
. Здесь есть следующий код:
from django.core.files.storage import FileSystemStorage
PACKAGE_STORAGE = FileSystemStorage(location="/var/data", base_url="/")
Для производственного использования это отлично работает. Но в моих модульных тестах загружаемые мной файлы теперь записываются в / var / data
, который содержит производственные данные. Я попытался заменить PACKAGE_STORE
в packages / tests.py
вот так
from django.conf import settings # This is line 1
from tempfile import mkdtemp
settings.PACKAGE_STORAGE = FileSystemStorage(location=mkdtemp(), base_url="/")
# rest of the imports and testing code below
, но настоящая проблема в том, что перед загружается тестовый файл, пакеты
приложение и его модели уже загружены, и поэтому параметр PACKAGE_STORAGE
был решен, прежде чем я смогу изменить его в коде настройки теста.
Есть ли там элегантный способ переопределить этот конкретный параметр в контексте тестирования?