我如何模仿Django模型管理器的方法?

2024-04-24 19:46:38 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个小类(在myapp/getters.py)中:

from django.contrib.auth.models import User

class UserGetter:
    def get_user(self):
        return User.objects.get(username='username')

我想模拟对User.objects.get的调用,返回一个MagicMock,并测试该方法是否返回我注入的内容。在myapp/tests/tests_getters.py

^{pr2}$

但是当我运行这个测试时(使用python manage.py test myapp.tests.tests_getters),我得到

AssertionError:
  <MagicMock name='User.objects().get()' spec='User' id='4354507472'> !=
    <MagicMock name='User.objects.get()' id='4360679248'>

为什么我不拿回我注射的那个假面具?我怎样才能正确地写这个测试?在


Tags: djangonamefrompyidgetobjectsusername
0条回答
网友
1楼 · 发布于 2024-04-24 19:46:38

我想这是你的问题:

user_class.objects.return_value = objects

您指示mock使用一个函数“objects”,该函数返回右侧的对象。
但是您的代码从不调用任何objects()函数。它访问用户对象属性,则用户在此处是模拟对象,因此用户在访问属性时返回一个新的模拟。在

相关问题 更多 >