我的測試需要很長時間才能運行,我試圖在測試之間回滾事務,而不是在測試之間刪除和創建表。回滾Flask中的測試之間的很多事務
問題是,在一些測試中,我做了多次提交。
編輯:我怎麼回退測試之間的事務,以便測試將運行得更快
下面是用於測試的基類。
import unittest
from app import create_app
from app.core import db
from test_client import TestClient, TestResponse
class TestBase(unittest.TestCase):
def setUp(self):
self.app = create_app('testing')
self.app_context = self.app.app_context()
self.app_context.push()
self.app.response_class = TestResponse
self.app.test_client_class = TestClient
db.create_all()
def tearDown(self):
db.session.remove()
db.drop_all()
db.get_engine(self.app).dispose()
self.app_context.pop()
這是我在回滾事務的嘗試。
class TestBase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.app = create_app('testing')
cls.app_context = cls.app.app_context()
cls.app_context.push()
cls.app.response_class = TestResponse
cls.app.test_client_class = TestClient
db.create_all()
@classmethod
def tearDown(cls):
db.session.remove()
db.drop_all()
db.get_engine(cls.app).dispose()
def setUp(self):
self.app_content = self.app.app_context()
self.app_content.push()
db.session.begin(subtransactions=True)
def tearDown(self):
db.session.rollback()
db.session.close()
self.app_context.pop()
雖然很多人會說這個。您並不需要測試運行的數據庫命令。單元測試是針對業務邏輯的,然後您可以創建一個模擬數據庫來避免這樣的問題,並且不會有弄亂數據庫的風險。 – CodeLikeBeaker 2014-10-10 20:48:36
你使用內存數據庫進行測試嗎?否則,這可能會大大加速測試。 – jsnjack 2014-10-14 16:18:01
我在postgreSQL中使用了一個測試數據庫。 – Siecje 2014-10-15 13:24:03