我的系统中有以下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)
有什么建议吗?
最佳答案
根据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)
关于python - 如何编写从zip文件创建InMemoryUploadedFile的python测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45899873/