小编Feu*_*ulo的帖子

如何使用pytest对SQLAlchemy Orm类进行单元测试

我想编写一些py.test代码来测试2个基于此Tutorial创建的简单sqlalchemy ORM类。问题是,如何在py.test中将数据库设置为测试数据库并在测试完成后回滚所有更改?是否可以模拟数据库并运行测试而无需实际连接到数据库?

这是我的课程的代码:


from sqlalchemy import create_engine, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker, relationship

eng = create_engine('mssql+pymssql://user:pass@host/my_database')

Base = declarative_base(eng)
Session = sessionmaker(eng)
intern_session = Session()

class Author(Base):
    __tablename__ = "Authors"

    AuthorId = Column(Integer, primary_key=True)
    Name = Column(String)  
    Books = relationship("Book")

    def add_book(self, title):
        b = Book(Title=title, AuthorId=self.AuthorId)
        intern_session.add(b)
        intern_session.commit()

class Book(Base):
    __tablename__ = "Books"

    BookId = Column(Integer, primary_key=True)
    Title = Column(String)      
    AuthorId = Column(Integer, ForeignKey("Authors.AuthorId"))    

    Author = relationship("Author")                           

Run Code Online (Sandbox Code Playgroud)

python sqlalchemy pytest python-3.x

6
推荐指数
1
解决办法
68
查看次数

标签 统计

pytest ×1

python ×1

python-3.x ×1

sqlalchemy ×1