未提供项目描述
项目描述
此包包含测试固定设备和资源,用于启动隔离的数据库和SQLAlchemy测试固定设备,以便在使用SQLAlchemy ORM时,您的Python单元测试可以在不相互干扰的情况下运行。
数据库在测试过程运行开始时初始化一次,会话固定设备也是如此。会话固定设备确保任何提交都不会永久提交,并在每个测试完成后将数据库回滚到干净状态。
要求
Python 3.8及以上版本应正常工作。
快速入门
使用pip安装
pip install db-testtools
示例基本测试类
class DBTestCase(testresources.ResourcedTestCase, testtools.TestCase):
"""Base class for all DB tests.
Brings up a temporary database and gives each test its own session.
"""
# These are resources that stay active for the entire
# duration of all the tests being run.
db_fixture = DatabaseResource(
ModelBase,
'myproject.models',
future=True,
)
resources = [('database', db_fixture)]
def setUp(self):
super().setUp()
self.session_fixture = SessionFixture(self.database, future=True)
self.useFixture(self.session_fixture)
# The session itself.
self.session = self.session_fixture.session
# The session factory.
self.Session = self.session_fixture.Session
此基本测试类默认将启动基于SQLite的数据库,并将self.session注入为SQLAlchemy会话,将self.Session注入为SQLAlchemy会话工厂。
- 如果您需要使用不同的数据库,则可以
将engine_fixture_name参数传递给DatabaseResource
设置环境变量TEST_ENGINE_FIXTURE
以使用要使用的引擎固定设备名称。目前有这两种可用
SqliteMemoryFixture
PostgresContainerFixture
引擎驱动程序
目前实现了上述两种驱动程序。SQLite固定设备实现了一个简单的内存数据库,每个测试都会完全删除并重新建立。
PostgresContainerFixture在其本地Docker容器中启动自己的Postgres实例。因此,在您使用此固定设备之前,您必须安装Docker。默认使用的Postgres映像是16.3-alpine,但此固定设备已知可以追溯到v11。
如果您已经在Docker内部运行,则需要使用–network-“host”选项启动容器,以便127.0.0.1路由到已启动的PG容器。您还需要做以下两件事:
将/var/run/docker.sock挂载到容器上,以便Docker客户端可以在主机上创建同级容器。
如果您不能使用主机网络,则需要提供主机网络桥接器的IP地址(通常是docker0等),以便设备知道在哪里找到PG服务器。IP地址可以通过构造函数提供给PostgresContainerFixture,或者您可以通过设置DBTESTTOOLS_PG_IP_ADDR环境变量。
此代码已在Cisco的一个大型项目中每天使用多年,非常稳定。
版权
db-testtools版权所有(c)2021-2024 Cisco Systems, Inc.及其附属公司。保留所有权利。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
db_testtools-2024.7.22.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6bf34df3b103dc9c5a15618babd3412690b4e7bdcc85aa57639b66161a9a1349 |
|
MD5 | a10191cccb075ae80d715fd37f70db5e |
|
BLAKE2b-256 | 97c23f822fca3dbccb4f747a923331753f3e3ffdc2c4bc7e68d86a234bc2ab6f |
db_testtools-2024.7.22-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 060d5db147241d982159bf1f58b710726ee5bf850ef8f6f00df8deb9ed0047e5 |
|
MD5 | f09295460c6af8ff0a4383e77d4ba6aa |
|
BLAKE2b-256 | 8ee7f9d2c4d43b4b3b8d0f4bac2bd4e014ab85a3941ef691ccd64f956c643636 |