В целях обучения я пытаюсь написать тест, который исправляет функцию authenticate
Джанго, чтобы избежать попадания в базу данных. Код, который я написал, не работает, и я не понимаю, почему. Я просмотрел сеть, но многое из того, что я прочитал, сбивает с толку. Любая помощь будет оценена.
Я использую Django, DRF, pytest, pytest-django и pytest-mock.
from django.contrib.auth import authenticate
from rest_framework.test import APIRequestFactory
def test_authenticate(mocker, user_factory):
user = user_factory.build()
mocker.patch('django.contrib.auth.authenticate', return_value=user)
factory = APIRequestFactory()
request = factory.get('/')
data = {
'username': user.email,
'password': 'testpassword',
}
assert user == authenticate(request=request, **data)
В приведенном выше коде user_factory
взято из conftest.py
, и мы можем предположить, что он работает как ожидалось.
Я получаю ошибку:
E Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
Опять же, я хочу избежать пометки теста для доступа к БД. Вместо этого я хочу иметь возможность высмеивать authenticate
и контролировать его возвращаемое значение.