如何使用 hypothesis-extra-sqlalchemy 在 Python 中对 SQLAlchemy 进行属性测试
- 安装 hypothesis-extra-sqlalchemy
在终端中执行以下命令:
pip install hypothesis-extra-sqlalchemy
- 导入相关模块
from hypothesis import given, settings from hypothesis.extra.sqlalchemy import column, TableData from hypothesis.strategies import text from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
- 创建 SQLAlchemy 模型
Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) email = Column(String)
- 创建数据库连接
engine = create_engine('sqlite:///:memory:') Session = sessionmaker(bind=engine) Base.metadata.create_all(engine)
- 定义属性测试数据
user_data = TableData( 'users', column('id', Integer()), column('name', text(min_size=1)), column('email', text(min_size=5)), )
- 编写属性测试
@given(user_data.draw()) @settings(deadline=1000) def test_create_user(user_data): session = Session() user = User(**user_data) session.add(user) session.commit() assert user.id is not None
在上述测试中,我们使用 @given
装饰器来标记测试函数的输入参数为一个具有特定字段的字典。
然后,使用 user_data.draw()
从上述定义的数据源中抽取一个样本。
接着,使用抽取到的数据创建一个 User
实例,并且将其添加到数据库中。最后,我们检验了这个新建的用户对象是否已经成功地被持久化到数据库中。
可以通过 @settings
装饰器,定义 Hypothesis 的超时和其他行为的配置。
最后运行该测试函数,验证我们创建的 User
模型是否具有可靠的基本属性。
相关文章