Test Suites & TestLoader
A TestSuite is a collection of test cases and other test suites that are
grouped together. TestLoader discovers and loads tests into suites for execution.
Creating a TestSuite
import unittest
# Create individual test cases
suite = unittest.TestSuite()
suite.addTest(TestUserCreation("test_create_user"))
suite.addTest(TestUserDeletion("test_delete_user"))
# Run the suite
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
Using TestLoader
loader = unittest.TestLoader()
# Load all tests from a class
suite = loader.loadTestsFromTestCase(TestMath)
# Load all tests from a module
suite = loader.loadTestsFromModule(test_user)
# Load tests by name
suite = loader.loadTestsFromName("test_user.TestUser")
# Load from multiple sources
suite = unittest.TestSuite([
loader.loadTestsFromTestCase(TestUser),
loader.loadTestsFromTestCase(TestOrder),
])
Composing Suites
def build_suite():
loader = unittest.TestLoader()
suite = unittest.TestSuite()
# Add tests from different modules
suite.addTests(loader.loadTestsFromModule(test_auth))
suite.addTests(loader.loadTestsFromModule(test_api))
suite.addTests(loader.loadTestsFromModule(test_models))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner(verbosity=2)
runner.run(build_suite())
Key Takeaway
TestSuite groups tests for organized execution, and TestLoader
discovers and loads tests from classes, modules, or by name. Together they give you
full control over which tests run and in what order.