As we have seen, it is common to need to share functionality in large test suites. Because unittest is based on subclassing TestCase, it is common to put extra functionality in your TestCase subclass itself. For example, if we need to test application logic that requires a database, we might initially add functionality to the start and connect to a database in our TestCase subclass directly:
class Test(unittest.TestCase):
def setUp(self):
self.db_file = self.create_temporary_db()
self.session = self.connect_db(self.db_file)
def tearDown(self):
self.session.close()
os.remove(self.db_file)
def create_temporary_db(self):
...
def connect_db(self, db_file):
...
def create_table(self, table_name, **fields):
...
def check_row(self, table_name, **query):
...
def test1(self):
self...