So konfigurieren Sie Pytest für Alembic-MigrationenPython

Python-Programme
Anonymous
 So konfigurieren Sie Pytest für Alembic-Migrationen

Post by Anonymous »

Ich verwende eine FastAPI-Anwendung mit der PostgreSQL-Datenbank und SQLAlchemy. Ich habe Sessionmaker verwendet, um Datenbanksitzungen zu erstellen und zu verwenden, und ich habe ein benutzerdefiniertes Alembic-Migrationsskript, das für die Datenbank ausgeführt werden muss.

Code: Select all

from app.core.config import DATABASE_URL
from app.models import User, Passwords
from app.db import Base

from alembic import context

config = context.config
config.set_main_option('sqlalchemy.url', DATABASE_URL)

fileConfig(config.config_file_name)

target_metadata = Base.metadata

def run_migrations_offline():

url = config.get_main_option("sqlalchemy.url")
context.configure(
url=url,
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
)

with context.begin_transaction():
context.run_migrations()
Ich möchte in der Lage sein, eine Testdatenbank zu erstellen, dieselbe Migration anzuwenden und nach dem Test den Abbau durchzuführen. Ich habe Folgendes in der conftest.py
versucht

Code: Select all

# Apply migrations at beginning and end of testing session
@pytest.fixture(scope="session")
def apply_migrations():
warnings.filterwarnings("ignore", category=DeprecationWarning)
environ["TEST"] = "True"
config = Config("alembic.ini")
alembic.command.upgrade(config, "head")
yield
alembic.command.downgrade(config, "base")

@pytest.fixture(scope="session")
def create_test_db():
url = f"{str(DATABASE_URL)}_test"

if database_exists(url):
drop_database(url)
create_database(url)
apply_migrations()
engine = create_engine(url, echo=True)

yield
drop_database(url)
Aber es scheint nichts zu bewirken.
Ich bin neu im Testen und kann keine anständige Anleitung finden, wie man das richtig einrichtet. Daher wäre ich für jede Art von Hilfe sehr dankbar.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post