7
我正在使用SQLAlchemy作爲ORM的金字塔應用程序。我想測試一個類方法的模型:在SQLAlchemy中使用factory_boy和類方法
# this is essentially a global used by all the models
Session = scoped_session(sessionmaker(autocommit=False))
class Role(Base):
__tablename__ = 'role'
id = sa.Column(sa.types.Integer, primary_key=True)
name = sa.Column(sa.types.Text, unique=True, nullable=False)
def __init__(self, **kwargs):
super(Role, self).__init__(**kwargs)
@classmethod
def find_all(self):
return Session.query(Role).order_by(Role.name).all()
我使用factory_boy測試,這裏是如何,我想設置我的測試廠:
import factory
from factory.alchemy import SQLAlchemyModelFactory
from sqlalchemy.orm import scoped_session, sessionmaker
from zk.model.meta import Base
from zk.model.role import Role
session = scoped_session(sessionmaker())
engine = create_engine('sqlite://')
session.configure(bind=engine)
Base.metadata.create_all(engine)
class RoleFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Role
FACTORY_SESSION = session
然而,當我嘗試叫RoleFactory.find_all()
在測試中,我得到一個錯誤:èUnboundExecutionError:找不到上映射器映射配置綁定|角色|角色,SQL表達式或本屆
我試過的Monkeypatching meta
和更換,全球會議與我的會議,但後來我得到這個錯誤:èAttributeError的:對象類型「RoleFactory」有沒有屬性「find_all」
我打過電話RoleFactory.FACTORY_FOR.find_all()
但後來我得到同樣的UnboundExecutionError。
我需要爲factory_boy做些別的事情才能知道類方法嗎?