2014-03-28 26 views
4

我创建了调出到Amazon S3使用博托有存储文件(我知道Django的储存处理这个问题,以及自定义文件存储后端,但我们遇到了几个问题吧)。我存储它utils的模块中,在我的模型中使用这样的:惩戒自定义文件存储后端

from utils.s3 import S3Storage 

class Photo(models.Model): 
    image = models.ImageField(storage=S3Storage(), upload_to="images") 

因此照片与图像文件创建的任何时间,图像文件被上传到S3桶。

我不希望在我的测试,以拨打电话出去S3,但搞清楚到底该怎么在这种情况下嘲笑是困难的。我无法嘲笑整个图像领域,因为我需要通过Tastypie测试创建模型。

任何想法?

回答

1

您可以剔除S3Storage类中的_save方法以避免上传到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 
+0

这会不会再写入到文件系统(别的东西,你不希望在测试过程中做)?我想像你想要什么就'保存()' –

+0

是的,它然后写入到文件系统中发生,但我认为这是可以接受的,因为它不是第三方API,我们会在运行后导致测试环境最终测试。 –