My tests take a long time to run and I am trying to rollback transactions between tests instead of dropping and creating the tables between tests.
The issues is that in some tests I do multiple commits.
EDIT: How do I rollback transactions between tests so that tests will run faster
Here is the Base class used for testing.
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()
Here is my attempt at rolling back transactions.
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()
 
     
     
     
     
    