Django Unit Test для тестирования загрузки файла - PullRequest
23 голосов
/ 23 ноября 2011

Прямо сейчас я просто проверяю ответ по ссылке так:

self.client = Client()
response = self.client.get(url)
self.assertEqual(response.status_code, 200)

Есть ли Django-ic способ проверить ссылку, чтобы увидеть, действительно ли происходит событие загрузки файла? Не могу найти много ресурсов по этой теме.

1 Ответ

30 голосов
/ 23 ноября 2011

Если URL-адрес предназначен для создания файла, а не «обычного» http-ответа, то его content-type и / или content-disposition будут другими.

объект ответа - это в основном словарь, так что вы могли бы что-то вроде

self.assertEquals(
    response.get('Content-Disposition'),
    "attachment; filename=mypic.jpg"
)

больше информации: https://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment

UPD: Если вы хотите прочитать фактическое содержимое вложенного файла, вы можете использовать response.content. Пример для zip-файла:

try:
    f = io.BytesIO(response.content)
    zipped_file = zipfile.ZipFile(f, 'r')

    self.assertIsNone(zipped_file.testzip())        
    self.assertIn('my_file.txt', zipped_file.namelist())
finally:
    zipped_file.close()
    f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...