Bird
Raised Fist0
PyTesttesting~5 mins

Project structure for tests in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
Why is it important to organize test files in a separate directory like tests/?
Keeping test files in a separate tests/ folder helps keep the project clean and makes it easy to find and run tests without mixing them with application code.
Click to reveal answer
beginner
What naming convention should test files and test functions follow in pytest?
Test files should start with test_ or end with _test.py. Test functions inside should start with test_. This helps pytest automatically find and run them.
Click to reveal answer
intermediate
What is the purpose of a conftest.py file in a pytest project?
conftest.py is used to share fixtures and setup code across multiple test files in the same directory or subdirectories, avoiding repetition.
Click to reveal answer
intermediate
How can you structure tests for different parts of your application in pytest?
You can create subfolders inside tests/ for different modules or features, like tests/api/ or tests/ui/, to keep tests organized and easy to maintain.
Click to reveal answer
intermediate
What file should you include to make your test directory a Python package and why?
Including an empty __init__.py file in the tests/ folder makes it a Python package, which can help with imports and test discovery in some cases.
Click to reveal answer
Where should you place your test files in a pytest project?
AIn a separate <code>tests/</code> directory
BMixed with application code
CIn the root directory only
DInside <code>__pycache__</code> folder
What prefix should test functions have in pytest?
Acheck_
Btest_
Crun_
Dfunc_
What is the role of conftest.py in pytest?
ATo configure the Python interpreter
BTo store test data files
CTo share fixtures and setup code across tests
DTo list all test files manually
How can you organize tests for different features in pytest?
AUse subfolders inside <code>tests/</code> for each feature
BPut all tests in one file
CName test files randomly
DPlace tests in the <code>src/</code> folder
Why add an empty __init__.py file in the tests/ folder?
ATo store test results
BTo run tests faster
CTo hide tests from pytest
DTo make the folder a Python package for imports
Describe a good project structure for organizing pytest tests in a medium-sized project.
Think about how to keep tests easy to find, run, and maintain.
You got /5 concepts.
    Explain the purpose and benefits of using a conftest.py file in pytest projects.
    Consider how to reuse setup code efficiently.
    You got /4 concepts.

      Practice

      (1/5)
      1. Why should you place your test files inside a tests/ folder in a pytest project?
      easy
      A. To avoid writing test functions starting with test_
      B. To make the tests run faster automatically
      C. Because pytest only runs tests in the root folder
      D. To keep test code separate and organized from application code

      Solution

      1. Step 1: Understand project organization

        Keeping tests in a separate tests/ folder helps keep the project clean and organized.
      2. Step 2: Recognize pytest behavior

        pytest can find tests anywhere but organizing them in tests/ is a best practice for clarity and maintenance.
      3. Final Answer:

        To keep test code separate and organized from application code -> Option D
      4. Quick Check:

        Organized tests = tests/ folder [OK]
      Hint: Put tests in a separate folder named tests for clarity [OK]
      Common Mistakes:
      • Thinking pytest only runs tests in root folder
      • Believing tests run faster in tests/ folder
      • Ignoring naming conventions for test functions
      2. Which of the following is the correct way to name a test file so pytest can discover it automatically?
      easy
      A. test_example.py
      B. mytests.py
      C. example.py
      D. TestExample.py

      Solution

      1. Step 1: Recall pytest naming rules

        pytest discovers test files that start with test_ or end with _test.py.
      2. Step 2: Check each option

        test_example.py starts with test_, so pytest will find it automatically.
      3. Final Answer:

        test_example.py -> Option A
      4. Quick Check:

        File starts with test_ = discovered [OK]
      Hint: Name test files starting with test_ for pytest discovery [OK]
      Common Mistakes:
      • Naming files without test_ prefix
      • Using uppercase letters at start
      • Assuming pytest finds any .py file
      3. Given this project structure:
      project/
        app.py
        tests/
          test_math.py
          utils/
            test_utils.py
      
      Which files will pytest run by default when you run pytest in the project root?
      medium
      A. Only tests/utils/test_utils.py
      B. Only tests/test_math.py
      C. Both tests/test_math.py and tests/utils/test_utils.py
      D. No tests run because of subfolder

      Solution

      1. Step 1: Understand pytest recursive discovery

        pytest looks inside the tests/ folder and all its subfolders for files starting with test_.
      2. Step 2: Identify test files

        Both test_math.py and test_utils.py match naming rules and are inside tests/ or its subfolder.
      3. Final Answer:

        Both tests/test_math.py and tests/utils/test_utils.py -> Option C
      4. Quick Check:

        pytest finds tests recursively in tests/ [OK]
      Hint: pytest finds test files recursively inside tests/ folder [OK]
      Common Mistakes:
      • Thinking pytest ignores subfolders
      • Assuming only root tests/ files run
      • Believing subfolders need special config
      4. You have this test file named test_sample.py inside tests/ folder:
      def sample_test():
          assert 1 + 1 == 2
      
      When you run pytest, no tests are found. Why?
      medium
      A. Function name does not start with test_
      B. File name should not start with test_
      C. pytest requires tests to be inside root folder only
      D. Missing import statement in test file

      Solution

      1. Step 1: Check function naming convention

        pytest discovers test functions only if their names start with test_.
      2. Step 2: Analyze given function name

        The function is named sample_test, which does not start with test_, so pytest ignores it.
      3. Final Answer:

        Function name does not start with test_ -> Option A
      4. Quick Check:

        Test functions must start with test_ [OK]
      Hint: Name test functions starting with test_ to be discovered [OK]
      Common Mistakes:
      • Assuming file name alone is enough
      • Thinking pytest needs imports in test files
      • Believing tests run only in root folder
      5. In a large pytest project, how can you organize tests to keep them manageable and easy to run selectively?
      hard
      A. Put all tests in one big file named test_all.py
      B. Use subfolders inside tests/ and add pytest.ini to configure test discovery
      C. Name test functions randomly and rely on pytest to find them
      D. Avoid using any configuration files to keep it simple

      Solution

      1. Step 1: Understand project scaling needs

        Large projects benefit from organizing tests in subfolders to separate features or modules.
      2. Step 2: Use configuration files

        Adding a pytest.ini file helps customize test discovery and running specific groups of tests easily.
      3. Final Answer:

        Use subfolders inside tests/ and add pytest.ini to configure test discovery -> Option B
      4. Quick Check:

        Subfolders + pytest.ini = manageable large projects [OK]
      Hint: Organize tests in subfolders and use pytest.ini config [OK]
      Common Mistakes:
      • Putting all tests in one file causing confusion
      • Ignoring naming conventions for test functions
      • Avoiding config files limits flexibility
      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