Bird
Raised Fist0
PyTesttesting~10 mins

Marker registration in PyTest - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to register a pytest marker named 'slow'.

PyTest
import pytest

def pytest_configure(config):
    config.[1]("slow", description="marks tests as slow")
Drag options to blanks, or click blank then click option'
Aregister_marker
Badd_marker
Caddoption
Dmark
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'register_marker' which is not a valid pytest config method.
Using 'addoption' which is for command line options, not markers.
2fill in blank
medium

Complete the code to mark a test function with the 'slow' marker.

PyTest
import pytest

@pytest.[1]("slow")
def test_example():
    assert True
Drag options to blanks, or click blank then click option'
Aparametrize
Bslow
Cskip
Dmark
Attempts:
3 left
💡 Hint
Common Mistakes
Using '@pytest.slow' which is invalid syntax.
Using '@pytest.parametrize' which is for parameterized tests.
3fill in blank
hard

Fix the error in the pytest marker registration function.

PyTest
def pytest_configure(config):
    config.[1]("slow", description="marks slow tests")
Drag options to blanks, or click blank then click option'
Aadd_marker
Bmark
Caddoption
Dregister_marker
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'register_marker' which is not a valid method.
Using 'addoption' which is unrelated to markers.
4fill in blank
hard

Fill both blanks to register a marker and add a description.

PyTest
def pytest_configure(config):
    config.[1]("performance", description=[2])
Drag options to blanks, or click blank then click option'
Aadd_marker
B"marks tests as performance-related"
C"marks tests for performance"
Dregister_marker
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'register_marker' instead of 'add_marker'.
Not providing a string description.
5fill in blank
hard

Fill all three blanks to register a marker, mark a test, and check the marker in the test.

PyTest
def pytest_configure(config):
    config.[1]("api", description="marks API tests")

import pytest

@pytest.[2]("api")
def test_api_call(request):
    marker = request.node.get_closest_marker([3])
    assert marker is not None
Drag options to blanks, or click blank then click option'
Aadd_marker
Bmark
C"api"
Dslow
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'register_marker' instead of 'add_marker'.
Using wrong marker name in decorator or get_closest_marker.
Passing variable instead of string to get_closest_marker.

Practice

(1/5)
1. What is the main purpose of registering markers in pytest.ini?
easy
A. To avoid warnings when using custom markers in tests
B. To automatically run all tests without specifying markers
C. To disable all markers in the test suite
D. To change the default test discovery pattern

Solution

  1. Step 1: Understand marker registration role

    Markers must be registered in pytest.ini to inform pytest about custom markers.
  2. Step 2: Identify effect of registration

    Without registration, pytest shows warnings about unknown markers; registration prevents these warnings.
  3. Final Answer:

    To avoid warnings when using custom markers in tests -> Option A
  4. Quick Check:

    Marker registration = avoid warnings [OK]
Hint: Register markers in pytest.ini to stop warnings [OK]
Common Mistakes:
  • Thinking registration runs tests automatically
  • Believing registration disables markers
  • Confusing marker registration with test discovery
2. Which of the following is the correct syntax to register a custom marker named slow in pytest.ini?
easy
A. [pytest] markers = slow: marks tests as slow
B. [markers] slow = marks tests as slow
C. [pytest] marker = slow: marks tests as slow
D. [pytest] markers = slow marks tests as slow

Solution

  1. Step 1: Recall pytest.ini marker syntax

    Markers are registered under the [pytest] section with the key 'markers' followed by marker descriptions.
  2. Step 2: Match correct syntax

    [pytest] markers = slow: marks tests as slow correctly uses '[pytest]' section and 'markers = slow: marks tests as slow' format.
  3. Final Answer:

    [pytest] markers = slow: marks tests as slow -> Option A
  4. Quick Check:

    Correct section and key = [pytest] markers = slow: marks tests as slow [OK]
Hint: Use [pytest] and 'markers =' to register markers [OK]
Common Mistakes:
  • Using wrong section name like [markers]
  • Misspelling 'markers' key
  • Omitting colon after marker name
3. Given the following pytest.ini content and test code, what will be the result when running pytest -m slow?
[pytest]
markers = slow: marks tests as slow
import pytest

@pytest.mark.slow
def test_example():
    assert True

def test_fast():
    assert True
medium
A. Only test_fast runs and passes
B. Both test_example and test_fast run and pass
C. Only test_example runs and passes
D. No tests run due to marker misconfiguration

Solution

  1. Step 1: Understand -m slow option

    The -m slow option runs only tests marked with @pytest.mark.slow.
  2. Step 2: Identify marked tests

    test_example is marked with @pytest.mark.slow, test_fast is not.
  3. Final Answer:

    Only test_example runs and passes -> Option C
  4. Quick Check:

    Run with -m slow = only slow tests run [OK]
Hint: -m runs only tests with matching marker [OK]
Common Mistakes:
  • Assuming all tests run with -m option
  • Confusing marker name with test function name
  • Ignoring marker registration effect
4. You added a custom marker database to your tests but pytest shows a warning: PytestUnknownMarkWarning. What is the most likely cause and how to fix it?
medium
A. You must run pytest with --disable-warnings to hide the message
B. You forgot to register the database marker in pytest.ini; add it under [pytest] markers
C. You need to rename the marker to db to avoid warnings
D. You used @pytest.mark.database incorrectly; remove the decorator

Solution

  1. Step 1: Identify cause of PytestUnknownMarkWarning

    This warning appears when a custom marker is used but not registered in pytest.ini.
  2. Step 2: Fix by registering marker

    Add database marker under the [pytest] section in pytest.ini to register it and remove the warning.
  3. Final Answer:

    You forgot to register the database marker in pytest.ini; add it under [pytest] markers -> Option B
  4. Quick Check:

    Warning = missing marker registration [OK]
Hint: Register all custom markers in pytest.ini to avoid warnings [OK]
Common Mistakes:
  • Ignoring the warning and continuing
  • Removing marker decorator instead of registering
  • Trying to rename marker instead of registering
5. You want to run tests marked as api but skip those marked as slow. Your pytest.ini contains:
[pytest]
markers =
    api: marks API tests
    slow: marks slow tests
Which command correctly runs only api tests excluding slow tests?
hard
A. pytest -m "not api and slow"
B. pytest -m "api or slow"
C. pytest -m "slow and not api"
D. pytest -m "api and not slow"

Solution

  1. Step 1: Understand marker expressions with -m

    The -m option accepts boolean expressions combining markers using and, or, and not.
  2. Step 2: Build expression for api tests excluding slow

    We want tests marked api but not slow, so expression is api and not slow.
  3. Final Answer:

    pytest -m "api and not slow" -> Option D
  4. Quick Check:

    Run api tests excluding slow = pytest -m "api and not slow" [OK]
Hint: Use -m "api and not slow" to include/exclude markers [OK]
Common Mistakes:
  • Using 'or' instead of 'and not' excludes wrong tests
  • Misplacing 'not' operator
  • Confusing marker names in expression
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