如何编写从zip文件创建InMemoryUploadedFile的python测试?
我的系统中有以下Django代码:如何编写从zip文件创建InMemoryUploadedFile的python测试?,python,django,unit-testing,Python,Django,Unit Testing,我的系统中有以下Django代码: zip_file = zipfile.ZipFile(file, 'r') for filename in zip_file.namelist(): try: file_read = zip_file.read(filename) print(filename) 我试图通过从python测试用例中传入一个zip文件来测试这段代码。当我将此代码用于web界面时,我注意到zip文件是InMemoryUploadedFile
zip_file = zipfile.ZipFile(file, 'r')
for filename in zip_file.namelist():
try:
file_read = zip_file.read(filename)
print(filename)
我试图通过从python测试用例中传入一个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)
任何建议?根据InMemoryUploadedFile
应使用InMemoryUploadedFile(文件、字段名称、名称、内容类型、大小、字符集、[content\u type\u extra])调用
因此,您应该传递所有这些参数:
with file as open('file.zip', 'r'):
InMemoryUploadedFile(file, relevant_field,'arquivo',
'application/zip', file_size, 'utf8')
对于文件大小,您可以在测试中使用固定的数字,或者如果需要,在中使用该技术
难道你不能发送一个zip文件到你的api然后检查吗?
f.seek(0, os.SEEK_END)
size = f.tell()
f.seek(0, os.SEEK_SET)