对于基于Python/Django/Celery的部署工具,我们有以下设置:
需要满足以下规范:
实现这个的首选方法是什么?
一些想法:
我遇到了以下问题.我有一个看起来像这样的模型:
class Package(models.Model):
name = models.CharField(max_length=64)
file = models.FileField(upload_to="subdir",
storage=settings.PACKAGE_STORAGE,
null=True)
Run Code Online (Sandbox Code Playgroud)
此示例中必不可少的是构造函数的storage=参数FileField.它充满了一个值settings.py.在以下代码中:
from django.core.files.storage import FileSystemStorage
PACKAGE_STORAGE = FileSystemStorage(location="/var/data", base_url="/")
Run Code Online (Sandbox Code Playgroud)
对于生产用途,这很好.但在我的单元测试中,我现在编写的上传/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
Run Code Online (Sandbox Code Playgroud)
但真正的问题是,在加载测试文件之前,packages应用程序及其模型已经加载,因此,PACKAGE_STORAGE在我能够在测试设置代码中更改之前,设置已经解决.
是否有一种优雅的方法可以在测试环境中覆盖此特定设置?