Bird
Raised Fist0
PyTesttesting~5 mins

@pytest.fixture decorator - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the @pytest.fixture decorator in pytest?
It marks a function as a fixture, which can provide setup data or state for tests. Fixtures help reuse code and manage test dependencies.
Click to reveal answer
beginner
How do you use a fixture in a pytest test function?
You add the fixture function name as a parameter to the test function. pytest automatically runs the fixture and passes its return value.
Click to reveal answer
beginner
Can a fixture return a value? If yes, how is it used in the test?
Yes, a fixture can return a value. The test function receives this value as an argument and can use it directly.
Click to reveal answer
intermediate
What is the scope of a pytest fixture and what are some common scopes?
Scope controls how often the fixture runs. Common scopes are 'function' (default, runs per test), 'module' (runs once per module), 'class' (runs once per class), and 'session' (runs once per test session).
Click to reveal answer
intermediate
How can you clean up resources after a test using a fixture?
Use the yield statement in the fixture. Code before yield runs before the test, and code after yield runs as cleanup after the test.
Click to reveal answer
What does the @pytest.fixture decorator do?
ARuns a test function multiple times
BSkips a test function
CMarks a function as a reusable setup for tests
DDefines a test case
How do you use a fixture named db in a test?
AAdd <code>db</code> as a parameter to the test function
BUse <code>@db</code> decorator on the test
CImport <code>db</code> in the test file
DCall <code>db()</code> inside the test
What is the default scope of a pytest fixture?
Aclass
Bmodule
Csession
Dfunction
How can you perform cleanup actions after a test using a fixture?
AAdd cleanup code after the test function
BUse <code>yield</code> in the fixture and put cleanup code after it
CCall a cleanup function manually in the test
DUse <code>@pytest.cleanup</code> decorator
Which of these is NOT a valid fixture scope?
Athread
Bmodule
Csession
Dfunction
Explain how the @pytest.fixture decorator helps in writing tests.
Think about how you prepare things before a test runs.
You got /5 concepts.
    Describe how to manage resource cleanup using a pytest fixture.
    Consider how to run code after the test finishes.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the @pytest.fixture decorator in pytest?
      easy
      A. To define a test case with parameters
      B. To mark a test as expected to fail
      C. To create reusable setup code that can be shared across multiple tests
      D. To skip a test during execution

      Solution

      1. Step 1: Understand what @pytest.fixture does

        The @pytest.fixture decorator is used to create setup code that can be reused in many tests to avoid repetition.
      2. Step 2: Compare options with the fixture purpose

        Options A, B, and C describe other pytest features, not fixtures.
      3. Final Answer:

        To create reusable setup code that can be shared across multiple tests -> Option C
      4. Quick Check:

        Fixture = reusable setup code [OK]
      Hint: Fixtures provide shared setup for tests to avoid repetition [OK]
      Common Mistakes:
      • Confusing fixtures with test skipping or marking
      • Thinking fixtures run tests themselves
      • Believing fixtures are only for cleanup
      2. Which of the following is the correct syntax to define a fixture named db_connection in pytest?
      easy
      A. def db_connection(): pass
      B. @pytest.fixture def db_connection(): pass
      C. @fixture def db_connection(): pass
      D. @pytest.test def db_connection(): pass

      Solution

      1. Step 1: Identify correct decorator usage

        The correct decorator for fixtures is @pytest.fixture, fully qualified with the pytest module.
      2. Step 2: Check each option

        @pytest.fixture def db_connection(): pass uses @pytest.fixture correctly. def db_connection(): pass misses the decorator. @fixture def db_connection(): pass uses @fixture without importing. @pytest.test def db_connection(): pass uses @pytest.test which is invalid.
      3. Final Answer:

        @pytest.fixture def db_connection(): pass -> Option B
      4. Quick Check:

        Use @pytest.fixture before function [OK]
      Hint: Always prefix fixture with @pytest.fixture decorator [OK]
      Common Mistakes:
      • Omitting the @pytest.fixture decorator
      • Using @fixture without importing pytest
      • Confusing @pytest.test with fixture decorator
      3. Given the following pytest code, what will be the output when running the test?
      import pytest
      
      @pytest.fixture
      def sample_data():
          return [1, 2, 3]
      
      def test_sum(sample_data):
          assert sum(sample_data) == 6
          print('Test passed')
      medium
      A. No output printed, test passes silently
      B. Test fails with assertion error
      C. SyntaxError due to fixture usage
      D. Test passed printed and test passes

      Solution

      1. Step 1: Understand fixture usage

        The fixture sample_data returns a list [1, 2, 3]. The test receives this list as argument.
      2. Step 2: Check assertion and print

        The sum of [1, 2, 3] is 6, so the assertion passes. The print statement runs and outputs 'Test passed'.
      3. Final Answer:

        Test passed printed and test passes -> Option D
      4. Quick Check:

        Fixture provides data, assertion true, print runs [OK]
      Hint: Fixture returns data; test uses it and prints on success [OK]
      Common Mistakes:
      • Assuming fixture causes syntax error
      • Thinking print won't show during test run
      • Believing assertion fails with correct sum
      4. Identify the error in this fixture code and how to fix it:
      import pytest
      
      @pytest.fixture
      def resource():
          setup = open('file.txt')
          yield setup
          setup.close()
      medium
      A. File 'file.txt' may not exist causing runtime error
      B. No error; code is correct
      C. Missing parentheses in yield statement
      D. Fixture must return value, not yield

      Solution

      1. Step 1: Analyze fixture code

        The fixture opens a file and yields the file object, then closes it after test.
      2. Step 2: Identify potential runtime issue

        If 'file.txt' does not exist, open() will raise an error before yield. This is a runtime error, not syntax.
      3. Final Answer:

        File 'file.txt' may not exist causing runtime error -> Option A
      4. Quick Check:

        File open can fail if file missing [OK]
      Hint: Check external resources exist before opening in fixture [OK]
      Common Mistakes:
      • Thinking yield needs parentheses
      • Believing fixtures cannot use yield
      • Ignoring file existence errors
      5. How can you modify this fixture to ensure cleanup code runs after the test, even if the test fails?
      import pytest
      
      @pytest.fixture
      def temp_file():
          f = open('temp.txt', 'w')
          yield f
          f.close()
      hard
      A. Use try-finally inside the fixture around yield
      B. Replace yield with return
      C. Remove yield and close file before returning
      D. Add a separate test to close the file

      Solution

      1. Step 1: Understand fixture cleanup with yield

        Using yield in fixtures allows code after yield to run as cleanup after the test finishes.
      2. Step 2: Ensure cleanup runs even if test fails

        Wrapping yield with try-finally ensures the cleanup code (file close) runs no matter what happens in the test.
      3. Final Answer:

        Use try-finally inside the fixture around yield -> Option A
      4. Quick Check:

        try-finally ensures cleanup after yield [OK]
      Hint: Wrap yield with try-finally to guarantee cleanup [OK]
      Common Mistakes:
      • Replacing yield with return loses cleanup
      • Closing file before yield stops test using it
      • Adding separate test for cleanup is incorrect
      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