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

时间:2020-06-14 18:41:25

标签: python-3.x django python-unittest django-testing

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

@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

1 个答案:

答案 0 :(得分:1)

您不能在装饰器中使用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
        ...