![](/img/trans.png)
[英]How to mock patch the Serializer.is_valid() method when unit testing in Django Rest Framework
[英]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.
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})
@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.