use*_*661 5 django unit-testing amazon-s3
我创建了一个自定义文件存储后端,该后端使用boto调出到Amazon S3并将文件存储在其中(我知道django-storages也可以解决此问题,但是我们遇到了一些问题)。我将其存储在utils模块中,并在我的模型中使用它,如下所示:
from utils.s3 import S3Storage
class Photo(models.Model):
image = models.ImageField(storage=S3Storage(), upload_to="images")
Run Code Online (Sandbox Code Playgroud)
因此,每当使用图像文件创建照片时,图像文件都会上传到S3存储桶。
我不想在测试期间向S3发出呼叫,但是要弄清楚在这种情况下要模拟的内容非常困难。我无法模拟整个图像字段,因为我需要通过Tastypie测试创建模型。
有任何想法吗?
您可以在类中模拟该_save方法S3Storage,以避免上传到 S3。你可以用FileSystemStorage它代替。
我对你的情况的解决方案是这样的:
import mock
from utils.s3 import S3Storage
from django.core.files.storage import FileSystemStorage
fss = FileSystemStorage()
@mock.patch.object(S3Storage, '_save', fss._save)
def test_something():
assert True
Run Code Online (Sandbox Code Playgroud)