2016-10-17 3 views
0

Я разрабатываю API, используя Django REST Framework. У меня есть модель Django, которая имеет models.ImageField, и она отлично работает. Но когда я хочу UnitTest создания модели объекта, я получаю сообщение об ошибке:Не удается загрузить файл изображения во время тестирования Django

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte 

Мой код:

class PlacesTest(APITestCase): 

    . . . 

    def test_create_place_full(self): 
     . . . 
     image = SimpleUploadedFile(name='test.jpg', 
            content=open('test.png', 'rb').read(), 
            content_type='image/jpeg') 

     request = self.factory.post(reverse('place-list'), 
            {'name': 'test_place_1', 
            'picture': image, 
            }) 

Я попытался прохождения string с пути к изображению, и я попытался методы из Django testing model with ImageField делать тесты, но не добиваться успеха.

Какой тип следует передать в инфраструктуру Django REST при добавлении изображения: файловый объект или строку с контуром?

Как добавить файл к моим тестам?

ответ

1

найдено решение для моей проблемы, если кто-то интересуется:

все, что мне нужно было указать format='multipart' в качестве аргументов запроса:

request = self.factory.post(reverse('place-list'), 
           {'name': 'test_place_1', 
           'picture': self.image}, 
           format='multipart') 

в моем проекте был:

REST_FRAMEWORK = { 
    ... 
    'TEST_REQUEST_DEFAULT_FORMAT': 'json' 
} 

так нет изображения может быть добавлен в запрос POST.

Смежные вопросы