msl*_*sln 1 django django-unittest django-rest-framework django-tests
我有以下序列化器:
from rest_framework.serializers import Serializer, ImageField
class MySerializer(Serializer):
avatar = ImageField()
Run Code Online (Sandbox Code Playgroud)
我怎样才能为它编写单元测试?我使用了 Django TestCase,但它引发了一个错误。
from django.test import TestCase
class MySerializerTest(TestCase):
def setUp(self):
self.data = {}
...
def test_image(self):
import tempfile
self.data['avatar'] = tempfile.NamedTemporaryFile(suffix=".jpg").file
r_data = json.dumps(self.data)
j_data = json.loads(r_data)
serializer = MySerializer(data=j_data)
if not serializer.is_valid():
import pprint
pprint.pprint(serializer.errors)
self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
TypeError:“BufferedRandom”类型的对象不可 JSON 序列化
我有什么错?如何为图像字段编写测试?
我建议使用django 中的类并使用PillowSimpleUploadedFile包创建图像。请参阅下面的示例。
from PIL import Image
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from django.utils.six import BytesIO
class MySerializerTest(TestCase):
...
def test_image(self):
image = BytesIO()
Image.new('RGB', (100, 100)).save(image, 'JPEG')
image.seek(0)
self.data['avatar'] = SimpleUploadedFile('image.jpg', image.getvalue())
serializer = MySerializer(data=self.data)
self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |