[英]Unit testing django serializers
I'm trying to unit test serializers but I have an issue in getting the expected error messages when I do serializers.is_valid().我正在尝试对序列化程序进行单元测试,但是在执行 serializers.is_valid() 时在获取预期的错误消息时遇到问题。
Code:代码:
serializer.py序列化程序.py
class RandomSerializer(serializers.Serializer):
sno = serializers.IntegerField(required=True)
description = serializers.CharField(required=True)
def __init__(self, *args, **kwargs):
super(RandomSerializer, self).__init__(*args, **kwargs)
....
test_serializer.py test_serializer.py
def test_random_serializer():
val_dict = {'sno': 1, 'description':'test'}
serializer = RandomSerializer(val_dict)
At this point when I check serializer.is_valid(), this evaluates to False and I get the following error when I check serializer.errors此时,当我检查 serializer.is_valid() 时,它的计算结果为 False,并且在检查 serializer.errors 时出现以下错误
{u'non_field_errors': [u'No input provided']}
How can I fix this?我该如何解决这个问题? Any thoughts?有什么想法吗?
Thanks in advance提前致谢
PS: I also tried serializer = RandomSerializer(data=val_dict) but this does not even populate values to serializers.data PS:我也试过 serializer = RandomSerializer(data=val_dict) 但这甚至没有将值填充到 serializers.data
Edit your test view like this,像这样编辑您的测试视图,
def test_random_serializer():
val_dict = {'sno': 1, 'description':'test'}
serializer = RandomSerializer(data=val_dict)
if serializer.is_valid():
return serializer.data # assertion test here....
return serializer.errors
When I build a model serializer, I use this way:当我构建模型序列化程序时,我使用这种方式:
class RandomSerializer(serializers.ModelSerializer):
fields = ('sno', 'description')
I guess defining such a tuple also works in non-model serializers.我想定义这样的元组也适用于非模型序列化程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.