Как протестировать 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')

0 ответов

Другие вопросы по тегам