【问题标题】:How do I mock a function in Django?如何在 Django 中模拟一个函数?
【发布时间】:2020-10-05 04:03:45
【问题描述】:

我希望对which_user 的以下调用返回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,如果有帮助的话。

【问题讨论】:

  • 模拟函数导入的位置,而不是导入的位置。

标签: python django python-unittest django-testing python-unittest.mock


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 2018-08-13
    • 2019-04-09
    • 2020-07-14
    • 1970-01-01
    • 2020-02-15
    • 2013-11-17
    • 2021-04-19
    相关资源
    最近更新 更多