Как тестировать приложения 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().