Вот моя схема и модели -
models.py
from sqlalchemy import Column, , Integer, String, DateTime, Float
from sqlalchemy.orm import (scoped_session, sessionmaker, relationship,
backref)
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine(conn_string, convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
# We will need this for querying
Base.query = db_session.query_property()
class SObjectives(Base):
__tablename__ = 'sos_t'
id = Column(Integer, primary_key=True)
soText = Column('so_text',String)
soDescription = Column('so_description',String)
schema.py
from models import SObjectives
class SOSQuery(graphene.ObjectType):
spa_SO = graphene.List(SObjectives)
def resolve_spa_SO(self, info):
query = SObjectives.get_query(info)
return query.all()
и вот мой тестовый пример
def test_grantsQuery():
with patch('schema.SOSQuery') as mock_sosquery:
client = Client(schema)
executed = client.execute("""
query {
SO {
id
soName
soText
soDescription
}
}
""")
print('executed - ', executed)
Теперь мне нужно смоделировать движок sqlalchemy в models.py, чтобы можно было смоделировать ответ fetchall.
что-то вроде этого -
что я должен исправлять 'модели .engine 'или' schema.models.SObjectives '(не знаю, как я имитирую движок.
mock_sqlalchemy_engine.return_value.execute.return_value.fetchall.return_value = [(1, 'John'),
(2, 'Tom'),
(3, 'Matt')]