In the previous section, we saw how test suites might make use of subclasses to share test functionality and how to refactor them into fixtures while keeping existing tests working.
An alternative to sharing test functionality through superclasses in unittest suites is to write separate utility classes and use them inside the tests. Getting back to our example, where we need to have database-related facilities, here is a way to implement that in a unittest-friendly way, without using superclasses:
# content of testing.py
class DataBaseTesting:
def __init__(self, test_case):
self.db_file = self.create_temporary_db()
self.session = self.connect_db(self.db_file)
self.test_case = test_case
test_case.addCleanup(self.teardown)
def teardown(self):
self.session.close()
os.remove(self.db_file)
...
def...