我正在使用 pytest 和 Factory Boy 测试我的 SQLAlchemy 模型,但我发现他们的文档缺乏关系。我已经设置了我的架构,所以有些用户可以属于多个组(组可以容纳多个用户)并且他们可以有多个令牌,但一个令牌只属于一个用户:
_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 对该模式进行建模有什么建议吗?