11import os
22from importlib import reload
33from typing import Generator , Any , MutableMapping
4- from testcontainers .postgres import PostgresContainer
54
65import pytest
76import structlog
87from fastapi .testclient import TestClient
8+ from testcontainers .core .container import DockerContainer
9+ from testcontainers .core .waiting_utils import wait_for_logs
10+ from testcontainers .postgres import PostgresContainer
911
1012import app .config as config
1113import app .main as main
@@ -17,16 +19,34 @@ def postgres_container() -> Generator[PostgresContainer, None, None]:
1719 yield postgres
1820
1921
22+ @pytest .fixture (scope = "session" )
23+ def postgres_docker_container () -> Generator [DockerContainer , None , None ]:
24+ env_vars : dict [str , str ] = {
25+ "POSTGRES_USER" : "myuser" ,
26+ "POSTGRES_PASSWORD" : "superpassword" ,
27+ }
28+ with DockerContainer (
29+ image = "public.ecr.aws/docker/library/postgres:18-alpine" ,
30+ env = env_vars ,
31+ ports = [5432 ],
32+ ) as container :
33+ wait_for_logs (container , "server started" )
34+ yield container
35+
36+
2037@pytest .fixture
2138def test_client (
2239 disable_db_migrations : config .Settings ,
2340 postgres_container : PostgresContainer ,
41+ postgres_docker_container : DockerContainer ,
2442) -> Generator [TestClient , None , None ]:
2543 print (postgres_container .get_container_host_ip ())
2644 print (postgres_container .get_exposed_port (5432 ))
2745 print (postgres_container .username )
2846 print (postgres_container .password )
2947 print (postgres_container .dbname )
48+ print (postgres_docker_container .get_container_host_ip ())
49+ print (postgres_docker_container .get_exposed_port (5432 ))
3050 app = reload (main ).app
3151 with TestClient (app ) as client :
3252 yield client
0 commit comments