Warum funktioniert das Alembic -Upgrade in PyTest nicht in der Testdatenbank?Python

Python-Programme
Anonymous
 Warum funktioniert das Alembic -Upgrade in PyTest nicht in der Testdatenbank?

Post by Anonymous »

Ich bin ziemlich neu im Test im Allgemeinen. Ich verwende Postgresql und SQLalchemy für Datenbanken, Fastapi -Backend und Alembic für Migrationen. Ich möchte eine Testdatenbank zum Testen einrichten. Ich habe benutzerdefinierte Migrationsskripte, die ich in meiner Testdatenbank ausführen möchte. Hier ist eine Beispiel -Test -Datei .
import pytest
import alembic
from alembic.config import Config

from fastapi.testclient import TestClient
import sqlalchemy as sa
from sqlalchemy import create_engine
from sqlalchemy_utils import create_database, database_exists, drop_database
from sqlalchemy.orm import sessionmaker
`
TEST_DB_URL = f"{DATABASE_URL}_test"

if database_exists(TEST_DB_URL):
drop_database(TEST_DB_URL)

create_database(TEST_DB_URL)

alembic_cfg = Config("alembic.ini")
alembic_cfg.set_main_option('sqlalchemy.url', str(TEST_DB_URL))
alembic.command.upgrade(alembic_cfg, "head")

engine = create_engine(TEST_DB_URL)
TestingSessionLocal = sessionmaker()

@pytest.fixture(scope='session')
def connection():
connection = engine.connect()
yield connection
connection.close()

@pytest.fixture
def session(connection):
transaction = connection.begin()
session = TestingSessionLocal(bind=connection)
yield session
session.close()
transaction.rollback()
# drop_database(TEST_DB_URL)

@pytest.fixture()
def client(session):
def override_get_db():
yield session

app.dependency_overrides[get_db] = override_get_db
client = TestClient(app)
yield client
del app.dependency_overrides[get_db]

def test_user_register(client):
response = client.post("/register", json={"email": "def@def.com", "master_pwd": "pass"})
print(response)
assert response.status_code == 200
< /code>
Aber während ich PGADMIN überprüfe, wird die Testdatenbank erstellt, aber die Migrationen werden nicht angewendet, und das Ausführen von PyTest gibt 404 Fehler.
Was mache ich falsch? < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post