我正在使用Django REST Framework开发API。
我有一个models.ImageField
的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的方法进行测试,但没有成功。
添加image:文件对象或带路径的字符串时,我应该将哪种类型传递给Django REST框架?
如何将真实文件添加到我的测试中?
答案 0 :(得分:2)
如果有人有兴趣,找到我的问题的解决方案:
我需要的只是在请求参数中指定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请求中。