Pytest Доступ к базе данных запрещен
Я пытаюсь запустить свои тесты с доступом к существующей базе данных, чтобы использовать ее повторно.
Вот ошибка:
ERROR drf/tests/test_auth.py - RuntimeError: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
здесь pytest.ini
[pytest]
DJANGO_SETTINGS_MODULE = drf.tests.test_settings
python_files = test_*.py
django_debug_mode = true
pythonpath = .venv/bin/python
addopts = --reuse-db --create-db
здесь test_settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR + '/tests', 'dump_test.sql'),
}
}
Вот упрощенная версия теста:
@pytest.mark.django_db
class AuthTestCase:
def test_two_step_authentication(self):
user = UsersFactory.create()
# Initialize the API client
client = APIClient()
# Step 1: Authenticate the user to get the initial token
url_step1 = reverse('token-auth-s1')
credentials = {
'email': user.email,
'password': 'password123'
}
response_step1 = client.post(url_step1, credentials, format='json')
# Assert the response status code
assert response_step1.status_code == 200
Структура каталога:
drf
├── drf
│ ├── __init__.py
│ ├── settings.py
│ ├── tests
│ │ ├── __init__.py
│ │ ├── dump_test.sql
│ │ ├── factory_boy
│ │ │ ├── __init__.py
│ │ │ ├── factory_models.py
│ │ │ └── languages_factory.py
│ │ ├── test_auth.py
│ │ └── test_settings.py
├── manage.py
└── pytest.ini
Список того, что я пробовал до сих пор:
- Используя @pytest.mark.django_db и @pytest.mark.django_db(True), вы получили ту же ошибку.
- Переместил @pytest.mark.django_db перед функцией, но получил ту же ошибку.
- Изначально база данных была PostgreSQL в Docker, но для простоты я сбрасывал содержимое в test_dump.sql.
- Разделите settings.py на test_settings.py и установите базу данных SQLite.
- Проверил с помощью os.path.exists путь к файлу dump_test.sql, который возвращает True.
Если у кого-то есть идеи, я их принимаю, спасибо!