如何模拟 returns 用户对象的函数

How to mock a function that returns a user object

我正在尝试模拟一个 returns 像这样的用户对象的方法

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

失败并出现错误:NameError: name 'self' is not defined .我在测试class.

的setup方法中定义了self.user2

您不能在装饰器中使用 self - 对象在解析时尚未定义。

相反,您可以将补丁移至方法中:

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

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