如何解决如何在pytest-django中测试model.Serializer?
我正在尝试学习如何在DRF项目中使用测试,但是我不能出去测试串行器,不能添加图像和主键,请举例说明如何操作>
我的测试:
def get_image(name='test.png',ext='png',size=(50,50),color=(256,0)):
file_obj = BytesIO()
image = Image.new("RGBA",size=size,color=color)
image.save(file_obj,ext)
file_obj.seek(0)
return File(file_obj,name=name)
@pytest.mark.django_db
def test_valid_poster_serializer():
valid_serializer_data = {
"title": "new poster","description": "poster description","image": get_image(),"address": "foo","phones": "89991234586","price": 100,"site": "https://foo-bar.com/","latitude": 123456.0,"longitude": 123456.0,"categories": {
"title": "new"
},}
serializer = PosterSerializer(data=valid_serializer_data)
assert serializer.is_valid()
assert serializer.validated_data == valid_serializer_data
assert serializer.data == valid_serializer_data
assert serializer.errors == {}
错误文字: 看起来像图像字段什么也不期望,但是在模型中该字段是必需的
E Common items:
E {'address': 'foo',E 'categories': OrderedDict([('title','new')]),E 'description': 'poster description',E 'latitude': 123456.0,E 'longitude': 123456.0,E 'phones': '89991234586',E 'price': 100,E 'site': 'https://foo-bar.com/',E 'title': 'new poster'}
E Differing items:
E {'image': None} != {'image': <File: test.png>}
E Full diff:
E {
E 'address': 'foo',E - 'categories': {'title': 'new'},E + 'categories': OrderedDict([('title',E 'description': 'poster description',E - 'image': <File: test.png>,E + 'image': None,E 'latitude': 123456.0,E 'longitude': 123456.0,E 'phones': '89991234586',E 'price': 100,E 'site': 'https://foo-bar.com/',E 'title': 'new poster',E }
tests/tests_poster/test_serializers.py:50: AssertionError
序列化器:
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = "__all__"
class PosterSerializer(serializers.ModelSerializer):
categories = CategorySerializer()
class Meta:
model = Poster
fields = ["id","title","image","price","site","description","address","phones","latitude","longitude","categories"]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。