Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写从zip文件创建InMemoryUploadedFile的python测试?_Python_Django_Unit Testing - Fatal编程技术网

如何编写从zip文件创建InMemoryUploadedFile的python测试?

如何编写从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

我的系统中有以下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类型。因此,我试图用我的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)