Запросы в тесте для приложения фляги не имеет файлов - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь выполнить модульные тесты для приложения фляги, в которое оно загружает файл (или несколько файлов). Ниже приведено то, что у меня есть, но я пробовал несколько вариантов размещения файла

file_storage = FileStorage(stream=f, filename='replays')
        response = self.context.post('/api/upload', data={'files':(file_storage, 'replays')},

Независимо от того, что я делаю, request.files всегда пуст, пока форма заполнена нужными мне данными.

Я не могу использовать request.post, так как мне нужен синхронный доступ к тестируемому вызову.

1 Ответ

0 голосов
/ 13 мая 2019

Если кто-то еще столкнется с этой проблемой. Это решение

# create your request like you normally would for upload
r = Request('POST', LOCAL_URL + '/api/upload',
            files={'replays': ('filename', io.Bytes(file))})

# build it
prepped = r.prepare()

# extract data needed for content
content_data = list(prepped.headers._store.items())
content_length = content_data[0][1][1]
content_type = content_data[1][1][1]

# add the body as an input stream and use the existing values
response = self.context.post('/api/upload', 
                             input_stream=io.BytesIO(prepped.body),
                             content_length=content_length,
                             content_type=content_type)
...