AttributeError: UNAUTHORIZED в pytest

Рейтинг: 0Ответов: 0Опубликовано: 27.03.2023

Прохожу сейчас обучение в Яндекс.Практикум и столкнулся со странной ошибкой, которую никто не знает как лечить.

Суть в том, что при выполнения pytest (уже в 2 разных проектах) происходят ошибки по типу AttributeError: UNAUTHORIZED. Ошибка повторяется в разных IDEA, попытался заново устанавливать виртуальную среду, открыл все возможные доступы в windows shell. Проблема не решилась. Однако, при установки той же программы на другом ПК все тесты проходят нормально.

Пример теста:

@pytest.mark.django_db(transaction=True)
    def test_post_unauth_delete_current(self, client, post):
        response = client.delete(f'/api/v1/posts/{post.id}/')
        assert response.status_code == HTTPStatus.UNAUTHORIZED, (
            'Проверьте, что DELETE-запрос неавторизованного пользователя '
            'к `/api/v1/posts/{id}/` вернёт ответ со статусом 401.'
        )
        test_post = Post.objects.filter(id=post.id).first()
        assert test_post, (
            'Проверьте, что DELETE-запрос неавторизованного пользователя '
            'к `/api/v1/posts/{id}/` не удаляет запрошенный пост.'
        )

И ответ:

cls = <enum 'HTTPStatus'>, name = 'UNAUTHORIZED'

    def __getattr__(cls, name):
        """
        Return the enum member matching `name`

        We use __getattr__ instead of descriptors or inserting into the enum
        class' __dict__ in order to support `name` and `value` being both
        properties for enum members (which live in the class' __dict__) and
        enum members themselves.
        """
        if _is_dunder(name):
            raise AttributeError(name)
        try:
            return cls._member_map_[name]
        except KeyError:
>           raise AttributeError(name) from None
E           AttributeError: UNAUTHORIZED

..\..\..\..\AppData\Local\Programs\Python\Python39\lib\enum.py:429: AttributeError

Все остальные тесты, которые так или иначе связаны с HTTPStatus дают такой ответ.

FAILED tests/test_comment.py::TestCommentAPI::test_comments_get_unauth - AttributeError: UNAUTHORIZED
FAILED tests/test_comment.py::TestCommentAPI::test_comments_id_unauth_get - AttributeError: UNAUTHORIZED
FAILED tests/test_post.py::TestPostAPI::test_post_not_auth - AttributeError: UNAUTHORIZED
FAILED tests/test_comment.py::TestCommentAPI::test_comment_change_not_auth_with_valid_data[put] - AttributeError: UNAUTHORIZED
FAILED tests/test_comment.py::TestCommentAPI::test_comment_change_not_auth_with_valid_data[patch] - AttributeError: UNAUTHORIZED
FAILED tests/test_comment.py::TestCommentAPI::test_comment_delete_by_unauth - AttributeError: UNAUTHORIZED
FAILED tests/test_group.py::TestGroupAPI::test_group_not_auth - AttributeError: UNAUTHORIZED
FAILED tests/test_group.py::TestGroupAPI::test_group_page_not_auth - AttributeError: UNAUTHORIZED
FAILED tests/test_post.py::TestPostAPI::test_post_unauth_create - AttributeError: UNAUTHORIZED
FAILED tests/test_post.py::TestPostAPI::test_post_change_not_auth_with_valid_data[put] - AttributeError: UNAUTHORIZED
FAILED tests/test_post.py::TestPostAPI::test_post_change_not_auth_with_valid_data[patch] - AttributeError: UNAUTHORIZED
FAILED tests/test_post.py::TestPostAPI::test_post_unauth_delete_current - AttributeError: UNAUTHORIZED

Подозреваю, что здесь какие-то ограничения со стороны винды, но не могу понять какие. Буду рад если у кого будут какие гипотезы.

это один из тестов, который проводит pytest

from http import HTTPStatus


class TestAuthAPI:

    def test_auth(self, client, user, password):
        response = client.post(
            '/api/v1/api-token-auth/',
            data={'username': user.username, 'password': password}
        )
        assert response.status_code != HTTPStatus.NOT_FOUND, (
            'Страница `/api/v1/api-token-auth/` не найдена, проверьте этот '
            'адрес в *urls.py*.'
        )
        assert response.status_code == HTTPStatus.OK, (
            'Проверьте, что POST-запрос к `/api/v1/api-token-auth/` '
            'возвращает ответ с кодом 200.'
        )

        auth_data = response.json()
        assert 'token' in auth_data, (
            'Проверьте, что ответ на POST-запрос с валидными данными к '
            '`/api/v1/api-token-auth/` содержит токен.'
        )

    def test_auth_with_invalid_data(self, client, user):
        response = client.post('/api/v1/api-token-auth/', data={})
        assert response.status_code == HTTPStatus.BAD_REQUEST, (
            'Проверьте, что POST-запрос к `/api/v1/api-token-auth/` '
            'с некорректными данными возвращает ответ со статусовм 400.'
        )

Ответы

Ответов пока нет.