Bird
Raised Fist0
PyTesttesting~5 mins

Fixture scope (function, class, module, session) in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the 'function' scope mean in pytest fixtures?
The fixture is created and destroyed for each test function that uses it. It runs fresh for every test.
Click to reveal answer
beginner
Explain the 'class' scope for pytest fixtures.
The fixture is created once per test class and shared among all test methods in that class.
Click to reveal answer
intermediate
What happens when a fixture has 'module' scope?
The fixture is created once per module (file) and shared by all tests in that module.
Click to reveal answer
intermediate
Describe the 'session' scope in pytest fixtures.
The fixture is created once for the entire test session and shared by all tests across all modules.
Click to reveal answer
intermediate
Why would you use a 'session' scoped fixture instead of a 'function' scoped one?
To save time by setting up expensive resources only once for all tests, like a database connection.
Click to reveal answer
Which pytest fixture scope creates a new fixture instance for each test function?
Afunction
Bclass
Cmodule
Dsession
If you want a fixture to be shared by all tests in a single Python file, which scope should you use?
Afunction
Bclass
Cmodule
Dsession
What is the scope that shares a fixture across all test classes and functions in the entire test run?
Asession
Bfunction
Cmodule
Dclass
Which scope would be best for a fixture that sets up a database connection used by many tests?
Afunction
Bsession
Cclass
Dmodule
A fixture with 'class' scope is created how many times per test class?
AOnce per session
BOnce per test function
COnce per module
DOnce per test class
Describe the differences between the four pytest fixture scopes: function, class, module, and session.
Think about how often the fixture is created and shared.
You got /4 concepts.
    Explain a real-life scenario where using a 'session' scoped fixture is better than a 'function' scoped fixture.
    Imagine setting up something costly once instead of many times.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the function scope mean for a pytest fixture?
      easy
      A. The fixture runs once per entire test session.
      B. The fixture runs once per test class.
      C. The fixture runs once per test module.
      D. The fixture runs once per test function.

      Solution

      1. Step 1: Understand fixture scopes

        Pytest fixtures can have different scopes controlling how often they run.
      2. Step 2: Define function scope meaning

        Function scope means the fixture runs before each test function and tears down after it.
      3. Final Answer:

        The fixture runs once per test function. -> Option D
      4. Quick Check:

        function scope = runs per test function [OK]
      Hint: Function scope means run before every test function [OK]
      Common Mistakes:
      • Confusing function scope with class or module scope
      • Thinking function scope runs once per class
      • Assuming function scope runs once per session
      2. Which of the following is the correct way to set a pytest fixture with module scope?
      easy
      A. @pytest.fixture(scope='module')
      B. @pytest.fixture(scope='function')
      C. @pytest.fixture(scope='class')
      D. @pytest.fixture(scope='session')

      Solution

      1. Step 1: Recall fixture scope syntax

        To set a fixture scope, use @pytest.fixture(scope='scope_name').
      2. Step 2: Match scope name for module

        The correct scope name for module is 'module'.
      3. Final Answer:

        @pytest.fixture(scope='module') -> Option A
      4. Quick Check:

        module scope syntax = scope='module' [OK]
      Hint: Use scope='module' to run fixture once per file [OK]
      Common Mistakes:
      • Using 'session' instead of 'module' for module scope
      • Forgetting to add scope parameter
      • Using incorrect quotes or misspelling scope
      3. Given this pytest code snippet, how many times will setup_db run?
      import pytest
      
      @pytest.fixture(scope='class')
      def setup_db():
          print('Setup DB')
      
      class TestA:
          def test_1(self, setup_db):
              pass
          def test_2(self, setup_db):
              pass
      
      class TestB:
          def test_3(self, setup_db):
              pass
      
      medium
      A. 1 time
      B. 3 times
      C. 2 times
      D. 4 times

      Solution

      1. Step 1: Understand class scope behavior

        Fixture with class scope runs once per test class, before any tests in that class.
      2. Step 2: Count test classes using the fixture

        There are two test classes: TestA and TestB, each uses setup_db fixture.
      3. Step 3: Calculate total runs

        setup_db runs once for TestA and once for TestB, total 2 times.
      4. Final Answer:

        2 times -> Option C
      5. Quick Check:

        class scope = once per class, 2 classes = 2 runs [OK]
      Hint: Class scope runs once per test class [OK]
      Common Mistakes:
      • Counting runs per test method instead of per class
      • Confusing class scope with function scope
      • Ignoring multiple test classes
      4. Identify the error in this pytest fixture usage:
      import pytest
      
      @pytest.fixture(scope='modul')
      def setup_env():
          pass
      
      def test_example(setup_env):
          assert True
      
      medium
      A. Missing @pytest.mark.usefixtures decorator.
      B. Typo in scope value causes fixture not to run.
      C. Fixture function must return a value.
      D. Test function missing parentheses.

      Solution

      1. Step 1: Check fixture scope spelling

        The scope value 'modul' is misspelled; correct is 'module'.
      2. Step 2: Understand effect of typo

        Pytest will not recognize the scope and may default or error, causing fixture not to run properly.
      3. Final Answer:

        Typo in scope value causes fixture not to run. -> Option B
      4. Quick Check:

        Scope must be spelled correctly [OK]
      Hint: Check scope spelling carefully to avoid errors [OK]
      Common Mistakes:
      • Assuming fixture must return a value
      • Confusing fixture decorator with marker
      • Ignoring spelling errors in parameters
      5. You want a pytest fixture to initialize a database connection once before all tests in multiple modules run, and close it after all tests finish. Which scope should you use and why?
      hard
      A. Use session scope to share across all tests in the run.
      B. Use function scope to isolate each test.
      C. Use module scope to share per file.
      D. Use class scope to share per test class.

      Solution

      1. Step 1: Understand the requirement

        The database connection should be initialized once before all tests in multiple modules and closed after all tests.
      2. Step 2: Match scope to requirement

        Session scope runs once per entire test session, perfect for setup/teardown across all modules.
      3. Final Answer:

        Use session scope to share across all tests in the run. -> Option A
      4. Quick Check:

        Session scope = once per test run [OK]
      Hint: Session scope runs once for all tests in the run [OK]
      Common Mistakes:
      • Choosing function or class scope which run too often
      • Using module scope which limits to one file
      • Not matching scope to resource lifetime
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard