Managing test hierarchies
As we have seen, it is commonto 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.create_table("weapons", name=str, type=str, dmg=int) ...
This works well for a single...