通过在django测试中修补自定义后端登录到测试客户端

通过在django测试中修补自定义后端登录到测试客户端,django,django-testing,Django,Django Testing,我正试图开始在一些视图上编写一些测试,但是我的项目使用了第三方登录系统,我有一个自定义的auth后端BarBackend,与此接口 我要测试的视图受LoginRequiredMixin保护。我想我需要用测试客户机修补登录,以访问并测试它们 我的目标是创建一个用户,然后使用我的补丁后端登录该用户,这样我就可以执行诸如self.client.get('some-url-with-login-required') 我该怎么做?到目前为止,我的尝试让我走到了这里: class FooTest(TestC

我正试图开始在一些视图上编写一些测试,但是我的项目使用了第三方登录系统,我有一个自定义的auth后端
BarBackend
,与此接口

我要测试的视图受
LoginRequiredMixin
保护。我想我需要用测试客户机修补登录,以访问并测试它们

我的目标是创建一个用户,然后使用我的补丁后端登录该用户,这样我就可以执行诸如
self.client.get('some-url-with-login-required')

我该怎么做?到目前为止,我的尝试让我走到了这里:

class FooTest(TestCase):

    def setUp(self):
        self.user = User.objects.create(username='user', email='test@example.com')

    @patch('identity.backends.BarBackend.authenticate')
    def test_can_access_with_groups(self, mock_auth):
        mock_auth.return_value = self.user
        self.client.login()
代码在self.client.login上失败。以下是stacktrace以防万一(删除/重命名了一些路径):

Traceback (most recent call last):
  File "/usr/lib/python3.8/unittest/mock.py", line 1342, in patched
    return func(*newargs, **newkeywargs)
  File "project_name/apps_dir/nzplatform/tests/test_site_access.py", line 32, in test_can_access_with_groups
    self.client.login()
  File ".venv/lib/python3.8/site-packages/django/test/client.py", line 585, in login
    user = authenticate(**credentials)
  File ".venv/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 67, in authenticate
    inspect.getcallargs(backend.authenticate, request, **credentials)
  File "/usr/lib/python3.8/inspect.py", line 1336, in getcallargs
    f_name = func.__name__
  File "/usr/lib/python3.8/unittest/mock.py", line 637, in __getattr__
    raise AttributeError(name)
AttributeError: __name__