django rest framework图片上传测试,以及drf测试所踩的一些坑
来源:互联网 发布:什么软件可以约会 编辑:程序博客网 时间:2024/06/07 00:38
django rest framework图片上传测试
models.py
# http://easy-thumbnails.readthedocs.io/# easy-thumbnails==2.3.0from easy_thumbnails.fields import ThumbnailerImageFieldclass Dish(models.Model): name = models.CharField(_(u'name'), max_length=100) photo = ThumbnailerImageField(upload_to=dish_directory_path, null=True, blank=True, verbose_name=_(u'photo'))
serializers.py
class ThumbnailImageField(serializers.ImageField): """ 从 easy_thumbnails.fields.ThumbnailerImageField 字段类型中解析出缩略图信息 """ def __init__(self, *args, **kwargs): self.size_alias = kwargs.pop('size_alias', 'large') kwargs['read_only'] = True super(ThumbnailImageField, self).__init__(*args, **kwargs) def to_representation(self, value): try: return value[self.size_alias].url except Exception: return Noneclass DishSerializer(serializers.ModelSerializer): thumb = ThumbnailImageField(source="photo", size_alias='medium') class Meta: model = Dish
tests.py
#from rest_framework.test import APITestCase def create_dish(self): #此处图片路径为绝大路径,static目录和tests.py文件同级 image_path = os.path.join(os.path.dirname( os.path.abspath(__file__)), 'static/test/dish_image.jpg') image_fp = open(image_path, 'rb') self.dish_data['photo'] = image_fp #注意post()的format值为"multipart"而不是json response = self.client.post(url, self.dish_data, format='multipart') image_fp.close() return response def test_create_dish(self): resp = self.create_dish() self.assertEqual(resp.status_code, status.HTTP_201_CREATED) self.assertEqual(self.dish_data['name'], resp.data['name']) self.assertTrue(resp.data['photo']) self.assertTrue('http://testserver/' in resp.data['photo'])
drf的解析器默认配置是
'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser')
如果是文件上传可能还要添加:
‘rest_framework.parsers.FileUploadParser’
drf测试所踩的一些坑
使用测试客户端的get方法上,习惯性的对url进行查询字符串拼装
(eg: search_url = “%s?name=%s” % (url, query)),
然后在调用时老是在self.client.get(search_url)里面抛出编码错误,各种转码,各种蛋疼,然后去看drf的get源码发现,完全不用拼装url,像post一样直接传递参数就可以了,如self.client.get(search_url,data={‘name’: query}),get函数内部已经实现转码。这件事告诉我们要多看源码,不要想当然啊
0 0
- django rest framework图片上传测试,以及drf测试所踩的一些坑
- Django.Rest.Framework搭建测试
- django-rest-framework 简写为-drf
- Django下测试与调试REST API的方法
- 如何优化 Django REST Framework 的性能?
- Django REST framework 的快速入门教程
- Django-rest-framework中过滤器的定制
- django rest framework 视图类的关系
- python django rest framework Serialization 的学习
- django-rest-framework过滤器的使用(三)
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- django rest framework Serializer
- Django Rest Framework
- django rest framework quickstart
- Django rest framework
- An error occurred while installing pg (0.18.4), and Bundler cannot continue.
- 设置Activity为全屏显示的两种方法
- PHP将二进制字节流转成中文字符串
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- Yarn MapReduce job数与进程数是对应的
- django rest framework图片上传测试,以及drf测试所踩的一些坑
- mybatis 中0 和 null 关系处理
- iOS相机获取图片自动旋转90度
- 用Qt写的上位机
- LaTeX实战经验:如何有效组织LaTeX
- HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上
- 【VS2015】c++实现windows系统版本、类型、语言识别
- Android性能专项测试之Memory Monitor工具
- sql里 a.user_id=b.o_iccard(+) 这个 "(+) " 什么意思?