Open
Description
- GINO version: 1.0.1
- Python version: 3.8
- asyncpg version: 0.21.0
- aiocontextvars version: 0.2.2
- PostgreSQL version: 10.14
Description
My task is create some database record (via GINO Model.create()) before running test (typical pytest.fixture usage), and drop everything after.
What I Did
conftest.py
import pytest
from fastapi.testclient import TestClient
from alembic.config import main as alembic_main
from settings import settings
settings.DATABASE_NAME = 'test_db_name'
from main import app_init
@pytest.fixture
def client():
alembic_main(["--raiseerr", "upgrade", "head"])
with TestClient(app_init()) as client:
yield client
alembic_main(["--raiseerr", "downgrade", "base"])
test.py
import pytest
from models import SpecialModel
@pytest.fixture
async def special_model():
special_model = await SpecialModel.create(
internal_name='internal_name',
comment='comment',
is_active=True,
title="Title",
text="Text"
)
yield special_model
def test_get_all_special_models(client, special_model):
response = client.get("api/get_all_models")
data = response.json()
assert data["success"] is True
assert len(data["result"]) == 1
What I got:
test setup failed
@pytest.fixture
async def special_model():
> special_model = await SpecialModel.create(
internal_name='internal_name',
comment='comment',
is_active=True,
title="Title",
text="Text"
)
tests/test.py:8:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/crud.py:444: in _create_without_instance
return await cls(**values)._create(bind=bind, timeout=timeout)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/crud.py:477: in _create
row = await bind.first(q)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/engine.py:748: in first
return await conn.first(clause, *multiparams, **params)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/engine.py:147: in __aexit__
await conn.release()
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/engine.py:279: in release
await dbapi_conn.release(True)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/engine.py:47: in release
return await self._release()
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/engine.py:83: in _release
await self._pool.release(conn)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/gino/dialects/asyncpg.py:232: in release
await self._pool.release(conn)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/asyncpg/pool.py:654: in release
return await asyncio.shield(ch.release(timeout))
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/asyncpg/pool.py:216: in release
raise ex
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/asyncpg/pool.py:206: in release
await self._con.reset(timeout=budget)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/asyncpg/connection.py:1137: in reset
await self.execute(reset_query, timeout=timeout)
../../.virtualenvs/deeplink-offer-service/lib/python3.8/site-packages/asyncpg/connection.py:295: in execute
return await self._protocol.query(query, timeout)
asyncpg/protocol/protocol.pyx:301: in query
???
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E asyncpg.exceptions._base.InterfaceError: cannot perform operation: another operation is in progress
Metadata
Metadata
Assignees
Labels
No labels