Provides fixtures for postgres instances running in docker.
Provided is the db_engine fixture which gives you an sqlalchemy engine to
connect to Postgres.
@pytest.fixture
def db_with_schema(db_engine):
create_database_schema(db_engine)
return db_engine
The db_engine_load_sql fixture can be parameterized using the load-sql command line option.
The following would execute any tests depending on this fixture parameterized by
2 different sets of SQL files, i.e. the tests will be executed once for each schema.
$ pytest --load-sql=schema1 --load-sql=schema2
This package also supports starting postgres from pytest which itself is running inside
a container.
Included is a docker-compose file compatible with Google Cloud Build, this can be used by
passing the command line argument --in-docker-compose=cloudbuild.
In order to override the location of the docker-compose.yml you should write a
docker_compose_files fixture.
@pytest.fixture(scope="session")
def docker_compose_files(in_docker_compose, pytestconfig):
# `in_docker_compose` gives you the value of the command line argument
# you can use it to pick the location of the file
# The following, for example, is used in this package
dc_type = f".{in_docker_compose}" if in_docker_compose else ""
dc_file = f"docker-compose{dc_type}.yml"
return [os.path.join(os.path.dirname(__file__), dc_file)]