модульное тестирование для непроверенного пользователя, пытающегося войти в систему

Я пытался проверить пользователя, который не прошел проверку.

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')

Строка «ответ» выдает следующую ошибку

Ошибка

Отслеживание (последний вызов последний):

Файл "/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, в сообщении secure = secure, ** extra)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/test/client.py", строка 350, в сообщении 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-packages/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 (запрос)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/core/handlers/base.py", строка 187, в _get_response response = self.process_exception_by_middleware (e, request)

Файл "/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 return view_func (* args, ** kwargs)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/generic/base.py", строка 68, в представлении return self.dispatch (request, * args, ** kwargs)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/utils/decorators.py", строка 67, в _wrapper return bound_func (* args, ** kwargs)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/views/decorators/debug.py", строка 76, в представлении возврата sensitive_post_parameters_wrapper (запрос, * args, ** kwargs)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/utils/decorators.py", строка 63, в функции возврата bound_func. get (self, тип (сам)) (* args2, ** kwargs2)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/views.py", строка 49, в отправке return super (LoginView, self) .dispatch (* args, ** kwargs )

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_framework/views.py", строка 489, в разделе dispatch response = self.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, в разделе dispatch response = handler (request, * args, ** kwargs)

Файл "/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 value = self.validate (value)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/rest_auth/serializers.py", строка 105, при проверке email_address = user.emailaddress_set.get (email = user.email)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/db/models/manager.py", строка 85, в manager_method return getattr (self.get_queryset (), name) ( * аргументы, ** kwargs)

Файл "/Users/docdocengineering3/.virtualenvs/docdoc/lib/python3.6/site-packages/django/db/models/query.py", строка 380, в get self.model._meta.object_name

Исключение: соответствующий запрос EmailAddress не существует.

Понятия не имею, почему это происходит. Это не проблема установки, поскольку я пытался запустить систему, создавая пользователя (не проверяя), и когда я "PostMan" по той же ссылке, я получаю правильную ошибку.

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

Таким образом, это работает в реальном продукте, но не при тестировании. Кто-нибудь знает почему? Любая помощь приветствуется.

Это единственный тест, с которым я не могу приступить к работе, все остальное работает правильно.


person NotMe    schedule 24.08.2017    source источник


Ответы (1)


Вероятно, ваш параметр EMAIL_VERIFICATION установлен на mandatory.

Таким образом, вы либо меняете его на none в тестах, либо вручную создаете объект EmailAddress (это требуется для django-allauth, когда включена обязательная проверка)

person mariodev    schedule 02.11.2017