Labs ICT
โญ Pro Login

setUpClass & tearDownClass

Class-level setup and teardown methods

setUpClass & tearDownClass

setUpClass and tearDownClass are class methods that run once before and after all tests in a class. They are useful for expensive setup operations that don't need to repeat for every test.

Basic Usage

import unittest

class TestAPI(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.server = start_test_server()
        cls.base_url = cls.server.url

    @classmethod
    def tearDownClass(cls):
        cls.server.shutdown()

    def test_get_users(self):
        response = requests.get(f"{self.base_url}/users")
        self.assertEqual(response.status_code, 200)

    def test_post_user(self):
        response = requests.post(
            f"{self.base_url}/users",
            json={"name": "Alice"}
        )
        self.assertEqual(response.status_code, 201)

Execution Order

# For a class with 3 tests:
# 1. setUpClass()         โ†’ runs ONCE
# 2. setUp()              โ†’ runs for test 1
# 3. test_first()         โ†’ test 1
# 4. tearDown()           โ†’ cleanup for test 1
# 5. setUp()              โ†’ runs for test 2
# 6. test_second()        โ†’ test 2
# 7. tearDown()           โ†’ cleanup for test 2
# 8. setUp()              โ†’ runs for test 3
# 9. test_third()         โ†’ test 3
# 10. tearDown()          โ†’ cleanup for test 3
# 11. tearDownClass()     โ†’ runs ONCE

Important Notes

  • Must be decorated with @classmethod.
  • Access class-level attributes via cls, not self.
  • If setUpClass fails, all tests in the class are skipped.
  • Use for expensive operations: database connections, server startup, large file creation.

Key Takeaway

Use setUpClass/tearDownClass for one-time setup shared across all tests in a class. They run as classmethods and are ideal for expensive operations.

๐Ÿงช Quick Quiz

setUpClass is a classmethod that runs: