我的系统中有以下Django代码:
zip_file = zipfile.ZipFile(file, 'r')
for filename in zip_file.namelist():
try:
file_read = zip_file.read(filename)
print(filename)
我试图通过从python TestCase传入一个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 :(得分:0)
根据source,应InMemoryUploadedFile
调用InMemoryUploadedFile(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)