def create_mock_queryset(obj): from django.db.models.query import QuerySet from django.core.exceptions import ObjectDoesNotExist def get_side_effect(*args, **kwargs): if kwargs.get('pk', None) == 1: return obj if kwargs.get('title', None) == 'permission_test_article1': return obj if kwargs.get('title__exact', None) == 'permission_test_article1': return obj raise queryset.model.DoesNotEixst queryset = MagicMock(spec=QuerySet, **{ 'get.side_effect': get_side_effect, }) queryset.model = MagicMock() queryset.model.DoesNotEixst = ObjectDoesNotExist queryset.model._meta = MagicMock(object_name='MockQuerysetModel') return queryset