Мне трудно понять, что не так с моей настройкой.Я пытаюсь проверить вид входа в систему, и независимо от того, что я пытаюсь, я получаю:
Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
Мой тест:
import pytest
from ..models import User
@pytest.mark.django_db
def test_login(client):
# If an anonymous user accesses the login page:
response = client.get('/users/login/')
# Then the server should respond with a successful status code:
assert response.status_code == 200
# Given an existing user:
user = User.objects.get(username='user')
# If we attempt to log into the login page:
response = client.post('/users/login/', {'username': user.username, 'password': 'somepass'})
# Then the server should redirect the user to the default redirect location:
assert response.status_code == 302
Мой конкурсФайл .py, в том же каталоге тестов:
import pytest
from django.core.management import call_command
@pytest.fixture(autouse=True)
def django_db_setup(django_db_setup, django_db_blocker):
with django_db_blocker.unblock():
call_command('loaddata', 'test_users.json')
Мой файл pytest.ini (в котором указан правильный файл настроек Django):
[pytest]
DJANGO_SETTINGS_MODULE = config.settings
Я в тупике.Я попытался использовать scope="session"
как в документации вместе с меткой @pytest.mark.django_db
, приспособлением db
(в качестве параметра для тестовой функции) или с обоими безуспешно.Я прокомментировал каждую строку теста, чтобы выяснить, какая из них вызвала проблему, но не смог ее выяснить.Я смог запустить тест только в том случае, если я удалил из теста все db-зависимые фикстуры / метки / код и имел простой assert True
.Я не верю, что проблема в моих настройках Django, так как сервер разработки работает нормально и может получить доступ к базе данных.
Что мне здесь не хватает?