我的系统中有以下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/

10-09 07:05