Как настроить tortoise-orm для pytest? Сейчас такая ошибка.
E asyncpg.exceptions.ObjectInUseError: database "test_project" is being accessed by other users
E DETAIL: There is 1 other session using the database.
По дате
По рейтингу
123456789101112131415161718192021222324252627282930313233343536373839
Для исправления этой ошибки вам нужно настроить тестовую базу данных для каждого тестового запуска. Для этого вы можете использовать фикстуры в Pytest.
1. Создайте файл conftest.py в корневом каталоге вашего проекта, если его еще нет.
2. Внутри файла создайте фикстуру, которая будет создавать новый экземпляр базы данных для каждого тестового запуска:
```python
import pytest
from tortoise.contrib.test import finalizer, initializer
@pytest.fixture(scope="session")
async def db_url():
return "postgres://user:password@localhost:5432/test_project"
@pytest.fixture(scope="session")
async def db(db_url):
await initializer(["app.models"], db_url=db_url)
yield
await finalizer()
@pytest.fixture(scope="function")
async def db_connection(db, db_url):
async with Tortoise.get_connection("default"):
yield
```
3. Создайте новый тестовый файл, например, test_sample.py, и использовать фикстуру, которую вы определили в conftest.py, чтобы запустить тесты с новой тестовой базой данных:
```python
import pytest
@pytest.mark.asyncio
async def test_sample(db_connection):
# тут ваш код теста
```
Это должно настроить вашу тестовую базу данных для использования в Pytest, и вы должны больше не получать ошибку "database is being accessed by other users".