Tôi đang làm việc trên ứng dụng Kim tự tháp với SQLAlchemy làm ORM. Tôi cố gắng để thử nghiệm một mô hình với một phương pháp học:Sử dụng factory_boy với phương thức SQLAlchemy và lớp học
# 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()
Tôi đang sử dụng factory_boy để thử nghiệm và đây là làm thế nào Tôi cố gắng để thiết lập nhà máy thử nghiệm của tôi:
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
Tuy nhiên khi tôi cố gắng để gọi RoleFactory.find_all()
trong một thử nghiệm, tôi nhận được một lỗi: E UnboundExecutionError: không thể xác định vị trí một ràng buộc cấu hình trên mapper Mapper | Role | vai trò, biểu thức SQL hoặc Session này
tôi đã cố gắng monkeypatching meta
và thay thế mà phiên toàn cầu với phiên tôi, nhưng sau đó tôi nhận được lỗi này: E AttributeError: loại đối tượng 'RoleFactory' không có thuộc tính 'find_all'
tôi đã cố gắng gọi RoleFactory.FACTORY_FOR.find_all()
nhưng sau đó tôi nhận được cùng một UnboundExecutionError.
Tôi có cần phải làm điều gì đó khác để factory_boy biết về phương pháp lớp không?