Set Up Test - zamaniamin/python GitHub Wiki

In Pytest, both setup_method and setup_class are methods used to set up test fixtures and resources, but they serve different purposes and have different scopes.

  1. setup_method:
    • setup_method is a method defined within a test class and is executed before every test method (test function) within that class.
    • It allows you to set up test-specific resources or perform actions that are needed for each individual test method.
    • Use it when you have test-specific setup requirements that need to be executed before each test method.

Here's an example:

class TestMyClass:
    def setup_method(self, method):
        # This method runs before every test method
        self.my_instance = MyClass()

    def test_some_feature(self):
        # Test code here

    def test_another_feature(self):
        # Test code here
  1. setup_class:
    • setup_class is a method defined within a test class and is executed once, at the beginning of the class. It's shared among all test methods within that class.
    • It's typically used for setup that is common to all the test methods in the class and doesn't need to be repeated for each individual test.
    • Use it when you have shared setup requirements that can be reused across multiple test methods in the same class.

Here's an example:

class TestMyClass:
    @classmethod
    def setup_class(cls):
        # This method runs once at the beginning of the class
        cls.common_instance = CommonClass()

    def test_some_feature(self):
        # Test code here using cls.common_instance

    def test_another_feature(self):
        # Test code here using cls.common_instance

In summary, you should choose between setup_method and setup_class based on whether you need setup to occur before each individual test method (setup_method) or if you have common setup that can be reused across multiple test methods within the same class (setup_class). Your choice depends on the specific testing needs and requirements of your project.