我如何模拟 Django 中的函数?

How do I mock a function in Django?

我希望以下对 which_user 的调用到 return self.user 无论传递给它的是什么,但它的行为就好像它根本没有被模拟。

def test_user_can_retrieve_favs_using_impersonation(self):
        with mock.patch('impersonate.helpers.which_user', return_value=self.user):
            user = which_user(self.user2)

我在这里做错了什么?我像这样导入了 which_userfrom impersonate.helpers import which_user 如果有帮助的话。

您需要通过函数的导入路径来模拟函数。 例如,您在 myapp 的视图中使用您的函数。所以你需要按照以下方式进行:

with mock.patch('myapp.views.which_user', return_value=self.user):
        user = which_user(self.user2)

这是因为它只修补可测试模块中定义的变量,而不修补系统或venv中的原始库和包。