2

我正在尝试对序列化程序进行单元测试,但是当我执行 serializers.is_valid() 时,我在获取预期的错误消息时遇到了问题。

代码:

序列化程序.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

def test_random_serializer():
    val_dict = {'sno': 1, 'description':'test'}
    serializer = RandomSerializer(val_dict)

此时,当我检查 serializer.is_valid() 时,结果为 False,当我检查 serializer.errors 时出现以下错误

 {u'non_field_errors': [u'No input provided']}

我怎样才能解决这个问题?有什么想法吗?

提前致谢

PS:我也尝试了 serializer = RandomSerializer(data=val_dict) 但这甚至没有将值填充到 serializers.data

4

2 回答 2

0

像这样编辑您的测试视图,

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
于 2017-06-10T09:34:28.203 回答
0

当我构建模型序列化程序时,我使用这种方式:

class RandomSerializer(serializers.ModelSerializer):
    fields = ('sno', 'description')

我猜想定义这样的元组也适用于非模型序列化程序。

于 2020-12-06T11:22:22.123 回答