Python Testing

  1. The unittest Framework
    1. Core Concepts
      1. The TestCase Class
        1. Inheriting from TestCase
          1. Organizing Test Methods
            1. Test Method Naming Conventions
            2. Test Fixtures
              1. Purpose of Fixtures
                1. setUp Method
                  1. Preparing Test Environments
                    1. Instance-Level Setup
                    2. tearDown Method
                      1. Cleaning Up After Tests
                        1. Resource Management
                        2. setUpClass Method
                          1. Class-Level Setup
                            1. Expensive Setup Operations
                            2. tearDownClass Method
                              1. Class-Level Teardown
                                1. Shared Resource Cleanup
                              2. Test Discovery
                                1. Naming Conventions
                                  1. Discovering Tests Automatically
                                    1. Using the unittest CLI
                                      1. Custom Test Discovery
                                    2. Writing Tests with unittest
                                      1. Structuring a Test File
                                        1. Importing Modules
                                          1. Organizing Test Classes
                                            1. Module-Level Setup
                                            2. Creating Test Methods
                                              1. Naming Test Methods
                                                1. Writing Assertions
                                                  1. Test Method Structure
                                                  2. Running Tests from the Command Line
                                                    1. Using python -m unittest
                                                      1. Specifying Test Modules and Classes
                                                        1. Verbose Output Options
                                                      2. Assertion Methods
                                                        1. Equality and Inequality Assertions
                                                          1. assertEqual
                                                            1. assertNotEqual
                                                              1. Comparing Complex Data Structures
                                                                1. Custom Equality Comparisons
                                                                2. Boolean and Identity Assertions
                                                                  1. assertTrue
                                                                    1. assertFalse
                                                                      1. assertIs
                                                                        1. assertIsNot
                                                                          1. assertIsNone
                                                                            1. assertIsNotNone
                                                                            2. Exception Assertions
                                                                              1. assertRaises
                                                                                1. Using Context Managers for Exceptions
                                                                                  1. Testing Exception Messages
                                                                                    1. Testing Exception Attributes
                                                                                    2. Container Assertions
                                                                                      1. assertIn
                                                                                        1. assertNotIn
                                                                                          1. assertListEqual
                                                                                            1. assertDictEqual
                                                                                              1. assertSetEqual
                                                                                                1. assertTupleEqual
                                                                                                2. Numeric Assertions
                                                                                                  1. assertAlmostEqual
                                                                                                    1. assertNotAlmostEqual
                                                                                                      1. assertGreater
                                                                                                        1. assertLess
                                                                                                        2. String Assertions
                                                                                                          1. assertRegex
                                                                                                            1. assertNotRegex
                                                                                                              1. assertMultiLineEqual
                                                                                                            2. Skipping Tests and Expected Failures
                                                                                                              1. Skipping Tests
                                                                                                                1. @unittest.skip
                                                                                                                  1. @unittest.skipIf
                                                                                                                    1. @unittest.skipUnless
                                                                                                                      1. Conditional Skipping
                                                                                                                      2. Marking Expected Failures
                                                                                                                        1. @unittest.expectedFailure
                                                                                                                          1. Documenting Known Issues
                                                                                                                        2. Organizing Tests
                                                                                                                          1. Test Suites
                                                                                                                            1. Creating and Running Test Suites
                                                                                                                              1. Combining Multiple Test Cases
                                                                                                                                1. Custom Test Suite Creation
                                                                                                                                2. The TestLoader Class
                                                                                                                                  1. Loading Tests Dynamically
                                                                                                                                    1. Customizing Test Discovery
                                                                                                                                      1. Loading from Modules and Classes
                                                                                                                                    2. Advanced unittest Features
                                                                                                                                      1. Subtests
                                                                                                                                        1. Testing Multiple Values
                                                                                                                                          1. Parameterized Testing
                                                                                                                                          2. Test Result Objects
                                                                                                                                            1. Custom Test Results
                                                                                                                                              1. Test Reporting
                                                                                                                                              2. Mock Integration
                                                                                                                                                1. Using unittest.mock
                                                                                                                                                  1. Patching in unittest