如何解决通过在 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 举报,一经查实,本站将立刻删除。