55 / 75 · 08 Infrastructure as Code Testing · Testcontainers for Infrastructure Testing← prev⊞ allnext →☰ Read as one page
10.5Redis with Testcontainers
# tests/integration/test_cache.py
import pytest
from testcontainers.redis import RedisContainer
import redis
@pytest.fixture(scope="module")
def redis_container():
with RedisContainer("redis:7-alpine") as r:
yield r
@pytest.fixture
def redis_client(redis_container):
client = redis.Redis(
host=redis_container.get_container_host_ip(),
port=redis_container.get_exposed_port(6379),
decode_responses=True,
)
client.flushall() # Clean state for each test
yield client
def test_cache_set_and_get(redis_client):
redis_client.set("user:123", '{"name": "Alice"}', ex=300)
result = redis_client.get("user:123")
assert result == '{"name": "Alice"}'
def test_cache_expiration(redis_client):
redis_client.set("temp-key", "value", ex=1)
assert redis_client.get("temp-key") == "value"
import time
time.sleep(2)
assert redis_client.get("temp-key") is None