在pytest中使用peewee时 setup/teardown表



当运行pytestpeewee单元测试用例时,是否有一种方法可以自动设置一个干净的db/表?

目前我正在做的是如下所示,

@pytest.fixture(autouse=True)
def before_after(tmpdir):
"""Fixture to execute before and after a test is run"""
# Before:
MyTable.create_table(safe=True)
MyOtherTable.create_table(safe=True)
# MyTable.truncate_table()
# MyOtherTable.truncate_table()
yield  # test
# After:
# MyTable.truncate_table()
# MyOtherTable.truncate_table()
MyTable.drop_table(safe=True)
MyOtherTable.drop_table(safe=True)

表数据在测试中持续存在。那么,除了在测试之间创建和删除表之外,是否还有其他方法可以在独立的环境中运行每个测试呢?

您可以在每个测试用例的开始处开始一个事务,然后在每个测试用例结束后回滚它。

对于普通的Python单元测试,您可以这样做:

class BaseTestCase(unittest.TestCase):
def setUp(self):
self.txn = db.transaction().__enter__()
def tearDown(self):
self.txn.rollback()

最新更新