Как тестировать приложения django, когда моя авторизация удалена?

В настоящее время я использую некоторые тесты следующим образом:

@pytest.mark.django_db(databases=["default"])
def test_list_boards(api_client):
    baker.make(Board)
    baker.make(Board, name="new")
    url = reverse("v1:boards-list")
    response = api_client().get(url)
    assert response.status_code == 200
    assert len(json.loads(response.content)) == 2

редактирование: поскольку я не использую django User, это мой пользовательский User:

class User:
    def __init__(self, token, name, user_id, email, is_mega_user, is_authenticated):
        self.token = token
        self.name = name
        self.user_id = user_id
        self.email = email
        self.is_mega_user = is_mega_user
        self.is_authenticated = is_authenticated

Но теперь я добавил новые пользовательские классы авторизации и разрешения в свое приложение, и теперь мои тесты не работают из-за этого. И я подумал: А как быть, если у меня нет подключения к Интернету? Я не смогу тестировать? Как я могу с этим справиться?

Если вам не нужно тестировать классы авторизации и разрешения, то замените их на аналогичные, но автономные модели.

Предполагая, что вы используете DRF (предположение из-за терминологии "авторизация и класс разрешения" и использования api_client) (хотя изменение настроек, конечно, применимо ко всем фреймворкам), вы можете

(1) сделайте это в вашем conftest.py's pytest_configure:

def pytest_configure():
    from django.conf import settings
    settings.REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = (...)

(2) или используя фикстуру pytest-django settings:

def test_without_internets(settings):
    settings.REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = (...)

которые вы можете естественно упаковать в свой собственный фикс (который может быть autouse для удобства)

(3) или просто старый with override_settings().

Вернуться на верх