Bird
Raised Fist0
PyTesttesting~5 mins

Test discovery rules in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is test discovery in pytest?
Test discovery is the process pytest uses to find test files and test functions automatically before running them.
Click to reveal answer
beginner
How does pytest identify test files by default?
Pytest looks for files matching the pattern test_*.py or *_test.py in the current directory and subdirectories.
Click to reveal answer
beginner
What naming convention does pytest use to find test functions inside test files?
Pytest finds test functions that start with test_ inside test files.
Click to reveal answer
intermediate
Can pytest discover tests inside classes? If yes, what is the rule?
Yes, pytest discovers test methods inside classes that start with Test and do not have an __init__ method. Test methods must start with test_.
Click to reveal answer
intermediate
How can you customize test discovery patterns in pytest?
You can customize test discovery by configuring python_files, python_functions, and python_classes in pytest.ini or other config files, or by using command-line options like --pyargs.
Click to reveal answer
Which file name will pytest discover by default?
ATestExample.py
Bexample_tested.py
Cexample.py
Dtest_example.py
Which function name will pytest recognize as a test inside a test file?
Acheck_function
Bfunction_test
Ctest_function
DTestFunction
Which class name will pytest consider for test discovery?
AsuiteTest
BTestSuite
Ctestsuite
DSuiteTest
How can you change the default test file pattern in pytest?
AEdit pytest.ini and set python_files
BRename files manually
CUse a different Python version
DChange function names
What happens if a test class has an __init__ method?
APytest will skip discovering tests inside it
BPytest will raise an error
CPytest will discover it normally
DPytest will run only __init__
Explain how pytest discovers test files and test functions by default.
Think about file and function naming conventions.
You got /3 concepts.
    Describe how to customize test discovery rules in pytest using configuration files.
    Look into pytest configuration options.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which of the following file names will pytest recognize as a test file by default?
      easy
      A. example.py
      B. test_example.py
      C. example_test.pyc
      D. TestExample.py

      Solution

      1. Step 1: Understand pytest file naming rules

        pytest looks for files starting or ending with 'test' and ending with '.py'.
      2. Step 2: Check each option

        'test_example.py' starts with 'test' and ends with '.py', so pytest will find it. Others either don't end with '.py' or don't start/end with 'test'.
      3. Final Answer:

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

        File starts or ends with 'test' + '.py' = test_example.py [OK]
      Hint: Test files start or end with 'test' and end with '.py' [OK]
      Common Mistakes:
      • Thinking pytest finds .pyc files
      • Ignoring case sensitivity in file names
      • Assuming any .py file is a test file
      2. Which function name will pytest recognize as a test function by default?
      easy
      A. test_login()
      B. testLogin()
      C. check_login()
      D. login_test()

      Solution

      1. Step 1: Recall pytest test function naming

        pytest looks for functions starting with 'test_'.
      2. Step 2: Evaluate each function name

        'test_login()' starts with 'test_' exactly, so pytest will find it. Others do not follow this pattern.
      3. Final Answer:

        test_login() -> Option A
      4. Quick Check:

        Function starts with 'test_' = test_login() [OK]
      Hint: Test functions start with 'test_' exactly [OK]
      Common Mistakes:
      • Using camelCase instead of snake_case
      • Placing 'test' at the end of function name
      • Missing underscore after 'test'
      3. Given the following files and functions, which tests will pytest discover and run?
      File: test_math.py
        def test_add(): pass
        def add_test(): pass
      
      File: math_test.py
        def test_subtract(): pass
        def subtract_test(): pass
      
      File: math.py
        def test_multiply(): pass
      
      medium
      A. test_add, test_subtract
      B. test_add, test_subtract, test_multiply
      C. test_add, subtract_test
      D. add_test, subtract_test

      Solution

      1. Step 1: Identify test files pytest finds

        pytest finds files starting or ending with 'test' and ending with '.py'. So 'test_math.py' and 'math_test.py' are test files. 'math.py' is not.
      2. Step 2: Identify test functions pytest finds in those files

        In 'test_math.py', pytest finds 'test_add' (starts with 'test_'). 'add_test' is ignored. In 'math_test.py', pytest finds 'test_subtract'. 'subtract_test' is ignored. 'test_multiply' in 'math.py' is ignored because file is not a test file.
      3. Final Answer:

        test_add, test_subtract -> Option A
      4. Quick Check:

        Files and functions follow naming rules = test_add, test_subtract [OK]
      Hint: Test files and functions must follow naming rules to be discovered [OK]
      Common Mistakes:
      • Assuming any function starting with 'test' is found regardless of file name
      • Including functions in non-test files
      • Confusing function name endings with beginnings
      4. You have a test file named TestExample.py with a function def test_func():. pytest does not run this test. What is the likely cause?
      medium
      A. Function name does not start with 'test_'
      B. pytest requires test classes to run tests
      C. File name does not follow pytest discovery rules
      D. Function is missing a return statement

      Solution

      1. Step 1: Check pytest file discovery rules

        pytest finds files starting or ending with 'test' in lowercase and ending with '.py'. 'TestExample.py' starts with uppercase 'T', so it is not recognized.
      2. Step 2: Verify function name and other options

        Function name 'test_func' is correct. Return statement is not required. pytest does not require test classes to run functions.
      3. Final Answer:

        File name does not follow pytest discovery rules -> Option C
      4. Quick Check:

        File name case-sensitive for discovery = D [OK]
      Hint: File names must be lowercase starting or ending with 'test' [OK]
      Common Mistakes:
      • Ignoring case sensitivity in file names
      • Thinking function needs return statement
      • Assuming test classes are mandatory
      5. You want pytest to discover tests in a file named mytests.py containing functions def test_one(): and def test_two():. By default, pytest does not find this file. How can you rename the file to follow pytest discovery rules without changing function names?
      hard
      A. Rename to my_test_s.py
      B. Rename to mytestsTest.py
      C. Rename to testmytests.py
      D. Rename to test_mytests.py

      Solution

      1. Step 1: Recall pytest file discovery naming

        pytest finds files starting with 'test_' or ending with '_test.py'.
      2. Step 2: Check options for correct naming

        'test_mytests.py' starts with 'test_' [check]. 'mytestsTest.py' ends with 'Test.py' (uppercase 'T' not matching lowercase 'test'). 'testmytests.py' lacks '_' after 'test'. 'my_test_s.py' does not start with 'test_' or end with '_test.py'. Only the first option works.
      3. Final Answer:

        Rename to test_mytests.py -> Option D
      4. Quick Check:

        File starts or ends with 'test' = test_mytests.py [OK]
      Hint: File must start or end with 'test' exactly [OK]
      Common Mistakes:
      • Removing 'test' from file name
      • Adding 'test' inside word without underscore
      • Using camelCase instead of snake_case
      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