Bird
Raised Fist0
PyTesttesting~5 mins

Conftest fixtures (shared across files) in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a conftest.py file in pytest?
A conftest.py file is a special configuration file in pytest used to define fixtures that can be shared across multiple test files in the same directory or subdirectories.
Click to reveal answer
beginner
How does pytest find fixtures defined in conftest.py?
Pytest automatically discovers fixtures in <code>conftest.py</code> files by looking in the test directory and its parent directories without needing to import them explicitly.
Click to reveal answer
beginner
Why use conftest.py fixtures instead of defining fixtures in each test file?
Using conftest.py fixtures helps avoid repeating fixture code in multiple test files, making tests cleaner and easier to maintain by sharing setup logic.
Click to reveal answer
intermediate
Can fixtures in conftest.py have different scopes? Give an example.
Yes, fixtures in conftest.py can have scopes like function, module, or session. For example, a session scoped fixture runs once per test session and can be shared across all tests.
Click to reveal answer
beginner
How do you use a fixture defined in conftest.py inside a test function?
Simply add the fixture name as a parameter to the test function. Pytest will inject the fixture automatically without needing to import it.
Click to reveal answer
What is the main purpose of conftest.py in pytest?
ATo share fixtures across multiple test files
BTo store test data files
CTo configure pytest command line options only
DTo write test cases
How do you access a fixture defined in conftest.py inside a test?
AFixtures in <code>conftest.py</code> cannot be accessed in tests
BImport the fixture explicitly in the test file
CCall the fixture function manually inside the test
DAdd the fixture name as a parameter to the test function
Which of these scopes can a fixture in conftest.py have?
Afunction
BAll of the above
Csession
Dmodule
If you have multiple conftest.py files in nested directories, which fixtures are available to tests?
AFixtures from all <code>conftest.py</code> files in parent directories
BFixtures are not shared across directories
CFixtures only from the root <code>conftest.py</code>
DOnly fixtures in the closest <code>conftest.py</code>
What happens if two conftest.py files define fixtures with the same name?
APytest raises an error
BBoth fixtures run in order
CThe fixture in the closest <code>conftest.py</code> overrides the others
DFixtures are merged automatically
Explain how conftest.py helps in sharing fixtures across multiple test files in pytest.
Think about how pytest finds and uses fixtures without explicit imports.
You got /4 concepts.
    Describe the different fixture scopes you can use in conftest.py and why you might choose each.
    Consider how often you want the setup to run to save time or reset state.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of placing fixtures in a conftest.py file in pytest?
      easy
      A. To run tests in parallel automatically
      B. To share setup code automatically across multiple test files without importing
      C. To store test data in a database
      D. To define test cases only for one specific test file

      Solution

      1. Step 1: Understand the role of conftest.py

        The conftest.py file is used to define fixtures that can be shared across multiple test files without needing explicit imports.
      2. Step 2: Identify the purpose of sharing setup code

        Sharing setup code helps avoid repetition and makes tests cleaner and easier to maintain.
      3. Final Answer:

        To share setup code automatically across multiple test files without importing -> Option B
      4. Quick Check:

        conftest.py shares fixtures automatically [OK]
      Hint: Remember: conftest.py shares fixtures without imports [OK]
      Common Mistakes:
      • Thinking conftest.py runs tests in parallel
      • Believing conftest.py stores test data
      • Assuming fixtures in conftest.py are for one file only
      2. Which of the following is the correct way to define a fixture in conftest.py for sharing across test files?
      easy
      A. def my_fixture(): return 42
      B. class my_fixture: pass
      C. @pytest.fixture def my_fixture(): return 42
      D. import pytest my_fixture = 42

      Solution

      1. Step 1: Recall fixture syntax in pytest

        Fixtures must be decorated with @pytest.fixture to be recognized by pytest.
      2. Step 2: Check each option

        @pytest.fixture def my_fixture(): return 42 correctly uses the decorator and defines a function returning a value. Other options miss the decorator or use wrong syntax.
      3. Final Answer:

        @pytest.fixture\ndef my_fixture(): return 42 -> Option C
      4. Quick Check:

        Fixtures need @pytest.fixture decorator [OK]
      Hint: Always use @pytest.fixture decorator for fixtures [OK]
      Common Mistakes:
      • Forgetting the @pytest.fixture decorator
      • Defining fixtures as classes without decorator
      • Assigning fixture values without function
      3. Given the following conftest.py fixture and test file, what will be the output when running pytest?
      -- conftest.py --
      import pytest
      
      @pytest.fixture
      def number():
          return 5
      
      -- test_sample.py --
      
      def test_double(number):
          assert number * 2 == 10
      
      def test_triple(number):
          assert number * 3 == 15
      
      medium
      A. Both tests pass
      B. Both tests fail
      C. test_double passes, test_triple fails
      D. test_double fails, test_triple passes

      Solution

      1. Step 1: Understand fixture usage

        The fixture number returns 5 and is shared automatically via conftest.py.
      2. Step 2: Evaluate test assertions

        test_double checks 5*2 == 10 (True), test_triple checks 5*3 == 15 (True). Both assertions are correct.
      3. Final Answer:

        Both tests pass -> Option A
      4. Quick Check:

        Fixture returns 5, assertions match [OK]
      Hint: Check fixture value and test assertions carefully [OK]
      Common Mistakes:
      • Assuming fixture is not shared without import
      • Miscalculating expected assertion values
      • Confusing test pass/fail logic
      4. You have a fixture defined in conftest.py as follows:
      import pytest
      
      @pytest.fixture
      def data():
          return [1, 2, 3]
      In your test file, you wrote:
      def test_sum(data):
          assert sum(data) == 10
      What is the problem and how to fix it?
      medium
      A. Assertion is wrong; sum([1,2,3]) is 6, so change 10 to 6
      B. Fixture not imported; add from conftest import data
      C. Fixture must be a class, not a function
      D. sum() cannot be used on lists

      Solution

      1. Step 1: Check the fixture return value

        The fixture data returns the list [1, 2, 3].
      2. Step 2: Calculate the sum and compare with assertion

        sum([1, 2, 3]) equals 6, but the test asserts it equals 10, which is incorrect.
      3. Final Answer:

        Assertion is wrong; sum([1,2,3]) is 6, so change 10 to 6 -> Option A
      4. Quick Check:

        sum([1,2,3]) = 6, fix assertion [OK]
      Hint: Verify expected values match fixture data [OK]
      Common Mistakes:
      • Thinking fixture must be imported explicitly
      • Assuming sum() can't handle lists
      • Changing fixture type unnecessarily
      5. You want to share a fixture that provides a database connection across multiple test files. You place this fixture in conftest.py:
      import pytest
      
      @pytest.fixture(scope="session")
      def db_connection():
          conn = create_connection()
          yield conn
          conn.close()
      What is the best reason to use scope="session" here?
      hard
      A. To run tests in parallel using the same connection
      B. To create a new connection for every test function
      C. To close the connection before each test
      D. To create the connection once per test session and reuse it in all tests

      Solution

      1. Step 1: Understand fixture scopes in pytest

        Scope "session" means the fixture is created once for the entire test run and shared across all tests.
      2. Step 2: Apply to database connection use case

        Creating the connection once saves time and resources, and closing it after all tests is efficient.
      3. Final Answer:

        To create the connection once per test session and reuse it in all tests -> Option D
      4. Quick Check:

        Session scope = one setup per test run [OK]
      Hint: Use session scope for expensive setup reused by all tests [OK]
      Common Mistakes:
      • Thinking session scope creates new instance per test
      • Assuming connection closes before each test
      • Confusing scope with parallel test execution
      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