这个问题与这个问题直接相关,但那个现在似乎已经过时了。
我正在尝试测试视图而无需访问数据库。为此,我需要对RelatedManager用户进行模拟。
我正在使用pytest和pytest-mock。
模型.py
# truncated for brevity, taken from django-rest-knox
class AuthToken(models.Model):
user = models.ForeignKey(
User,
null=False,
blank=False,
related_name='auth_token_set',
on_delete=models.CASCADE
)
Run Code Online (Sandbox Code Playgroud)
视图.py
class ChangeEmail(APIView):
permission_classes = [permissions.IsAdmin]
serializer_class = serializers.ChangeEmail
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
user = request.user
user.email = request.validated_data['email']
user.save()
# Logout user from all devices
user.auth_token_set.all().delete() # <--- How do I mock this?
return Response(status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
测试视图.py
def test_valid(mocker, user_factory):
user = user_factory.build()
user.id = …Run Code Online (Sandbox Code Playgroud) django pytest python-mock django-rest-framework pytest-django