微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过在 django test 中修补自定义后端登录到测试客户端

我正在尝试开始针对某些视图编写一些测试,但我的项目使用了 3rd 方登录系统,并且我有一个与此交互的自定义​​身份验证后端 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 上失败。这是堆栈跟踪以防万一(删除/重命名了一些路径):

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__

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。