如何模拟返回用户对象的函数

问题描述 投票:0回答:1

我正在尝试模拟一种返回像这样的用户对象的方法

@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。我在测试类的设置方法中定义了self.user2

python-3.x django python-unittest django-testing
1个回答
0
投票

您不能在装饰器中使用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
        ...
© www.soinside.com 2019 - 2024. All rights reserved.