1
我正在用pytest和Factory Boy測試我的SQLAlchemy模型,但我發現他們的文檔缺乏關係。我有我的架構設置,以便還有誰可以屬於多個組(組可以容納多個用戶),他們可以有多個令牌用戶,但令牌只屬於單個用戶:具有一對多和多對多字段的Factory Boy模型
_user_groups_table = Table(
'user_groups', Base.metadata,
Column('user_id', INTEGER(unsigned=True), ForeignKey('user.id')),
Column('group_id', INTEGER(unsigned=True), ForeignKey('user_group.id'))
)
class UserGroup(Base):
__tablename__ = 'user_group'
id = Column(INTEGER(unsigned=True), Sequence('user_group_id_seq'), primary_key=True, autoincrement=True)
name = Column(String(255), unique=True, nullable=False)
class User(Base):
__tablename__ = 'user'
id = Column(INTEGER(unsigned=True), Sequence('user_id_seq'), primary_key=True, autoincrement=True)
name = Column(String(255), unique=True, nullable=False)
groups = relationship('UserGroup', secondary=_user_groups_table)
auth_tokens = relationship('Token', cascade='delete')
class Token(Base):
__tablename__ = 'token'
id = Column(INTEGER(unsigned=True), Sequence('token_id_seq'), primary_key=True, autoincrement=True)
user_id = Column(INTEGER(unsigned=True), ForeignKey('user.id'), nullable=False)
value = Column(String(511), unique=True, nullable=False)
我已經一直在嘗試不同的東西,其中包括一個@ factory.post_generation方法,用於將用戶實例中的標記添加到羣組&中,但是當我將用戶放入夾具中並將其用於測試函數時,這些字段從不顯示。你有什麼建議如何用Factory Boy對這個模式進行建模?
感謝您的回答,問題原來是用autocommit和autoflush初始化我的會話都設置爲False。 – sandorlev