繁体   English   中英

如何在 django 测试中模拟串行器?

[英]How to mock serializer in django testing?

So i was testing a rest api method in with we are returning json formatted serializer.data but when we tried to make testcases for this object we couldn't able to mock serializer properly.


视图.py

data = {Something in jason format}
serializer = ClassName1(data=data)
serializer.is_valid(raise_exception=True)

rec_data = {Something in json format}
rec_serializer = ClassName2(data=rec_data)
rec_serializer.is_valid(raise_exception=True)
return Response({'key01':serializer.data, 'key02':rec_serializer.data})

test_views.py


@mock.patch('myapp.serializers.ClassName1.data')
@mock.patch('myapp.serializers.ClassName2.data')
@mock.patch('myapp.serializers.ClassName1.is_valid')
@mock.patch('myapp.serializers.ClassName2.is_valid')
def test_serializer(TestCase, mock_c2_isvalid, mock_c1_isvalid, mock_c2_data, mock_c1_data):
    url = reverse('view-name')
    mock_c2_data.return_value = {dummy json data}
    mock_c1_data.return_value = {dummy json data}
    req = RequestFactory().get(url)
    response = views.Class.as_view()(req)
    self.assertEquals(response.status_code, 200)
    

上面的测试用例是有效的,但是如果有任何方法可以模拟序列化器 object 如果 self 并使用它为某些方法返回值,我们必须为一个序列化器修补两次。

让我知道是否有另一种更好的方法来模拟序列化程序。

你可以这样做:

@mock.patch('myapp.serializers.ClassName1', **{
   'return_value': {
      'data': {dummy json data},
      'is_valid': True,
   }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM