2017-08-26 76 views
1

我在我的系統下面的Django代碼:如何編寫一個從zip文件創建InMemoryUploadedFile的python測試?

zip_file = zipfile.ZipFile(file, 'r') 
for filename in zip_file.namelist(): 
    try: 
     file_read = zip_file.read(filename) 
     print(filename) 

我想在一個zip文件傳遞從蟒蛇測試用例來測試該代碼。當我在web界面中使用這段代碼時,我注意到zip文件是一個InMemoryUploadedFile類型。所以我試圖用我的TestCase模仿這個功能,但似乎無法在我的測試中用zip文件創建一個InMemoryUploadedFile()。

我已經試過這樣:

file_name = 'file.zip' 
in_memory_uploaded_file = InMemoryUploadedFile(file_name, None, file_name, 'application/zip', 0, None, None) 

任何建議?

+0

的技術不能送你一個zip文件到您的API,然後檢查? –

回答

0

按照sourceInMemoryUploadedFileInMemoryUploadedFile(file, field_name, name, content_type, size, charset, [content_type_extra])

所以叫,你應該通過所有這些參數:

with file as open('file.zip', 'r'): 
    InMemoryUploadedFile(file, relevant_field,'arquivo', 
         'application/zip', file_size, 'utf8') 

對於文件的大小,你可以使用固定數量的測試,或者如果需要的話使用https://stackoverflow.com/a/19079887/3930971

f.seek(0, os.SEEK_END) 
size = f.tell() 
f.seek(0, os.SEEK_SET)