Как протестировать JSONModel в модульном тесте?
Очень тривиальный вопрос: как протестировать простую JsonModel без подключения к экземпляру Redis?
from pydantic import EmailStr
from redis_om import (Field, JsonModel)
class Person(JsonModel):
id: str = Field(index=True)
email: EmailStr = Field(index=True)
Результат этого теста: redis.Exceptions.ConnectionError: Ошибка 10061 при подключении к локальному хосту:6379. Соединение не удалось установить, поскольку целевая машина активно отказалась от него.
import pytest
from models import Person
def test_person_model():
person= Person(id='123', email='test@example.com')
Вкратце и очень-очень просто: как правильно проводить модульное тестирование моделей, не имея под рукой экземпляра Redis в модульном тесте (а также позже в автоматизированной тестовой среде дальше по конвейеру CI/CD)?
-------ВРЕМЕННОЕ РЕШЕНИЕ--------
Единственный способ, которым я нашел это возможным на локальном хосте, — это использовать @pytest.fixture. В любом случае, это может НЕ быть доступно в конвейере CI/CD. Этот код, скорее всего, потерпит неудачу при выполнении действий GitHub при выполнении модульных тестов. Не помогает то, что действия github могут вызвать сам сервис Redis.
@pytest.fixture(scope="function", autouse=True)
def setup_redis():
os.system('docker run -d --name redis-unit-test -p 6379:6379 -p 8009:8001 redis/redis-stack:latest ')
# give some time for the Redis server to start
time.sleep(2)
yield
os.system('docker stop redis-unit-test')
os.system('docker rm redis-unit-test')