@@ -18,3 +18,35 @@ FastAPI container that is using :code:`ServerContainer`
1818 ... response = client.get(" /" )
1919 ... assert response.status_code == 200
2020 ... assert response.json() == {" Status" : " Working" }
21+
22+ A more advance use-case, where we are using a FastAPI container that is using Redis container:
23+
24+ .. doctest ::
25+
26+ >>> from testcontainers.redis import RedisContainer
27+ >>> from testcontainers.generic import ServerContainer
28+
29+ >>> with RedisContainer() as redis:
30+ ... redis_container_port = redis.port
31+ ... redis_container_ip_address = redis.get_docker_client().bridge_ip(redis._container.id)
32+
33+ ... with DockerImage(path="./modules/generic/tests/samples/advance_1", tag="advance-1:latest") as image:
34+ ... web_server = ServerContainer(port=80, image=image)
35+ ... web_server.with_env(key="REDIS_HOST", value=redis_container_ip_address)
36+ ... web_server.with_env(key="REDIS_PORT", value=redis_container_port)
37+
38+ ... with web_server:
39+ ... web_server.get_api_url = lambda: web_server._create_connection_url()
40+ ... client = web_server.get_client()
41+
42+ ... response = client.get("/")
43+ ... assert response.status_code == 200, "Server request failed"
44+ ... assert response.json() == {"Status": "ok"}
45+
46+ ... test_data = {"key": "test_key", "value": "test_value"}
47+ ... response = client.post("/set", params=test_data)
48+ ... assert response.status_code == 200, "Failed to set data"
49+
50+ ... response = client.get(f"/get/{test_data['key']}")
51+ ... assert response.status_code == 200, "Failed to get data"
52+ ... assert response.json() == {"key": test_data["key"], "value": test_data["value"]}
0 commit comments