首页 文章

对未经验证的用户尝试登录进行单元测试

提问于
浏览
0

我一直在尝试测试尚未验证的用户 .

class TestLoginApi(TestCase):
    URL = '/rest-auth/login/'
    EMAIL = 'testuser@test
    PASSWORD = 'password'
    DATA = {'email': EMAIL, 'password': PASSWORD}

    @classmethod
    def setUpTestData(cls):
        cls.user = get_user_model().objects.create_user(username='testuser', email=cls.EMAIL,
                                                    password=cls.PASSWORD)

def test_login_api_without_verification(self):
    response = self.client.post(self.URL, self.DATA, format='json')

“响应”行会引发以下错误

Error

Traceback(最近一次调用最后一次):文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/case.py”,第59行,在testPartExecutor中生成文件“/ Library / Frameworks / Python.framework / Versions / 3.6 / lib / python3.6 / unittest / case.py“,第601行,运行testMethod()文件”/Users/docdocengineering3/GitHub/website/project/authorization/Tests/test_login.py“ ,第34行,在test_login_api_without_verification response = self.client.post(self.URL,self.DATA,format ='json')文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/ django / test / client.py“,第548行,在post secure = secure,** extra)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/test/client . py“,第350行,在post secure = secure,** extra)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/test/client.py“,第416行,在泛型返回self.request(** r)文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-pack age / django / test / client.py“,第501行,请求six.reraise(* exc_info)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/utils/six .py“,第686行,重新提升值文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/core/handlers/exception.py“,第41行,内部响应= get_response(request)文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/core/handlers/base.py”,第187行,在_get_response response = self.process_exception_by_middleware(e ,请求)文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/core/handlers/base.py”,第185行,在_get_response response = wrapped_callback(request,* callback_args, ** callback_kwargs)文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/decorators/csrf.py”,第58行,在wrapped_view中返回view_func(* args,** kwargs)文件“/Users/docdocengineering3/.virtualenvs /docdoc/lib/python3.6/site-packages/django/views/generic/base.py“,第68行,在视图中返回self.dispatch(request,* args,** kwargs)文件”/ Users / docdocengineering3 / .virtualenvs / docdoc / lib / python3.6 / site-packages / django / utils / decorators.py“,第67行,在_wrapper中返回bound_func(* args,** kwargs)文件”/Users/docdocengineering3/.virtualenvs/docdoc /lib/python3.6/site-packages/django/views/decorators/debug.py“,第76行,在sensitive_post_parameters_wrapper返回视图中(request,* args,** kwargs)File”/Users/docdocengineering3/.virtualenvs/docdoc /lib/python3.6/site-packages/django/utils/decorators.py“,第63行,在bound_func中返回func.get(self,type(self))(* args2,** kwargs2)File”/ Users / docdocengineering3 / .virtualenvs / docdoc / lib / python3.6 / site-packages / rest_auth / views.py“,第49行,在dispatch return super(LoginView,self).dispatch(* args,** kwargs)文件”/ Users /docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py“,第489行,在调度响应中= sel f.handle_exception(exc)文件“/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py”,第449行,在handle_exception中self.raise_uncaught_exception(exc)文件“/ Users /docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py“,第486行,in dispatch response = handler(request,* args,** kwargs)File”/ Users / docdocengineering3 / .virtualenvs / docdoc / lib / python3.6 / site-packages / rest_auth / views.py“,第92行,发布在self.serializer.is_valid(raise_exception = True)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib /python3.6/site-packages/rest_framework/serializers.py“,第237行,在is_valid self._validated_data = self.run_validation(self.initial_data)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6 /site-packages/rest_framework/serializers.py“,第435行,在run_validation值= self.validate(value)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/serializers . py“,第105行,在validate email_address = user.emailaddress_set.get(email = user.email)File”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/db/models/ manager.py“,第85行,在manager_method中返回getattr(self.get_queryset(),name)(* args,** kwargs)文件”/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages /django/db/models/query.py“,第380行,in get self.model._meta.object_name例外:EmailAddress匹配查询不存在 .

我不知道为什么会这样 . 这不是一个设置问题,因为我尝试实际运行系统,创建用户(不验证),当我“PostMan”相同的链接时,我得到正确的错误

{"non_field_errors": [ "E-mail is not verified." ] }

所以它适用于实际产品,但不适用于测试 . 谁知道为什么?任何帮助都很大赞赏 .

这是我唯一无法开展工作的测试,所有其他测试都正常运行 .

1 回答

  • 0

    您可能将 EMAIL_VERIFICATION 设置为 mandatory .

    因此,您要么在测试中将其更改为 none ,要么手动创建 EmailAddress 对象(当强制验证打开时,django-allauth需要它)

相关问题