我如何模拟 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_user
:from impersonate.helpers import which_user
如果有帮助的话。
您需要通过函数的导入路径来模拟函数。
例如,您在 myapp 的视图中使用您的函数。所以你需要按照以下方式进行:
with mock.patch('myapp.views.which_user', return_value=self.user):
user = which_user(self.user2)
这是因为它只修补可测试模块中定义的变量,而不修补系统或venv中的原始库和包。
我希望以下对 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_user
:from impersonate.helpers import which_user
如果有帮助的话。
您需要通过函数的导入路径来模拟函数。 例如,您在 myapp 的视图中使用您的函数。所以你需要按照以下方式进行:
with mock.patch('myapp.views.which_user', return_value=self.user):
user = which_user(self.user2)
这是因为它只修补可测试模块中定义的变量,而不修补系统或venv中的原始库和包。