Fix slow tests.

This commit is contained in:
grossmj 2020-12-07 18:53:40 +10:30
parent 6aefb5d32b
commit 509e762cda

View File

@ -42,7 +42,7 @@ if sys.platform.startswith("win") and sys.version_info < (3, 8):
# https://github.com/pytest-dev/pytest-asyncio/issues/68 # https://github.com/pytest-dev/pytest-asyncio/issues/68
# this event_loop is used by pytest-asyncio, and redefining it # this event_loop is used by pytest-asyncio, and redefining it
# is currently the only way of changing the scope of this fixture # is currently the only way of changing the scope of this fixture
@pytest.yield_fixture(scope="session") @pytest.yield_fixture(scope="class")
def event_loop(request): def event_loop(request):
loop = asyncio.get_event_loop_policy().new_event_loop() loop = asyncio.get_event_loop_policy().new_event_loop()
@ -50,17 +50,17 @@ def event_loop(request):
loop.close() loop.close()
@pytest.fixture(scope="session") @pytest.fixture(scope="class")
async def app(db_engine) -> FastAPI: async def app() -> FastAPI:
async with db_engine.begin() as conn: # async with db_engine.begin() as conn:
await conn.run_sync(Base.metadata.drop_all) # await conn.run_sync(Base.metadata.drop_all)
await conn.run_sync(Base.metadata.create_all) # await conn.run_sync(Base.metadata.create_all)
from gns3server.api.server import app as gns3app from gns3server.api.server import app as gns3app
yield gns3app yield gns3app
@pytest.fixture(scope="session") @pytest.fixture(scope="class")
def db_engine(): def db_engine():
db_url = os.getenv("GNS3_TEST_DATABASE_URI", "sqlite:///:memory:") # "sqlite:///./sql_test_app.db" db_url = os.getenv("GNS3_TEST_DATABASE_URI", "sqlite:///:memory:") # "sqlite:///./sql_test_app.db"
@ -70,7 +70,7 @@ def db_engine():
@pytest.fixture(scope="class") @pytest.fixture(scope="class")
async def db_session(app: FastAPI, db_engine): async def db_session(db_engine):
# recreate database tables for each class # recreate database tables for each class
# preferred and faster way would be to rollback the session/transaction # preferred and faster way would be to rollback the session/transaction