Bird
Raised Fist0
PyTesttesting~5 mins

Running tests by marker (-m) in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the pytest marker -m option do?
The -m option in pytest runs only the tests that have a specific marker. It helps to select tests by tags or categories.
Click to reveal answer
beginner
How do you mark a test function with a custom marker in pytest?
Use the @pytest.mark.marker_name decorator above the test function to assign a marker.
Click to reveal answer
beginner
Example: How to run only tests marked as slow using pytest command line?
Run pytest -m slow to execute only tests marked with @pytest.mark.slow.
Click to reveal answer
intermediate
What happens if you run pytest -m 'not slow'?
Pytest runs all tests that do NOT have the slow marker. The not keyword excludes tests with that marker.
Click to reveal answer
intermediate
Why should you register custom markers in pytest.ini?
Registering markers in pytest.ini avoids warnings and documents the purpose of each marker for better test management.
Click to reveal answer
Which pytest command runs only tests marked with fast?
Apytest -k fast
Bpytest --fast
Cpytest -m fast
Dpytest --marker fast
How do you mark a test as database in pytest?
A@database.mark
B@pytest.database
C@mark.database
D@pytest.mark.database
What does pytest -m 'slow or network' do?
ARuns tests marked with both slow and network
BRuns tests marked with slow or network
CRuns tests without slow or network markers
DRuns all tests except slow and network
Why add markers to pytest.ini?
ATo avoid warnings and document markers
BTo run tests in parallel
CTo disable markers
DTo speed up test execution
What is the result of pytest -m 'not network'?
ARuns tests without the network marker
BRuns only network tests
CRuns all tests
DRuns tests with network and other markers
Explain how to use pytest markers to run a specific group of tests.
Think about tagging tests and selecting them by tag.
You got /3 concepts.
    Describe why and how to register custom markers in pytest configuration.
    Consider configuration files and team collaboration.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the -m option do when running pytest?
      easy
      A. Runs only tests with the specified marker
      B. Runs tests in a specific directory
      C. Runs tests in parallel
      D. Generates a test report

      Solution

      1. Step 1: Understand pytest markers

        Markers are labels you add to tests to group them logically.
      2. Step 2: Use -m option

        The -m option runs only tests that have the specified marker label.
      3. Final Answer:

        Runs only tests with the specified marker -> Option A
      4. Quick Check:

        pytest -m runs tests by marker = A [OK]
      Hint: Remember: -m filters tests by marker name [OK]
      Common Mistakes:
      • Confusing -m with directory or file options
      • Thinking -m runs all tests regardless of marker
      • Assuming -m runs tests in parallel
      2. Which of the following is the correct syntax to run pytest tests marked as slow?
      easy
      A. pytest --marker slow
      B. pytest -m slow
      C. pytest -marker slow
      D. pytest --m slow

      Solution

      1. Step 1: Recall pytest command options

        The correct option to select tests by marker is -m, not --marker or others.
      2. Step 2: Match syntax to run tests with marker

        The correct command is pytest -m slow to run tests marked as slow.
      3. Final Answer:

        pytest -m slow -> Option B
      4. Quick Check:

        Use single dash -m for marker filter = D [OK]
      Hint: Use single dash -m, not --marker [OK]
      Common Mistakes:
      • Using --marker instead of -m
      • Adding extra dashes like --m
      • Confusing option names
      3. Given these tests marked as fast and db:
      @pytest.mark.fast
      def test_a(): pass
      
      @pytest.mark.db
      def test_b(): pass
      
      @pytest.mark.fast
      def test_c(): pass
      What tests run with the command pytest -m "fast and not db"?
      medium
      A. test_b only
      B. No tests run
      C. test_a, test_b, and test_c
      D. test_a and test_c

      Solution

      1. Step 1: Understand the marker expression

        The command runs tests marked with fast AND NOT marked with db.
      2. Step 2: Check each test's markers

        test_a and test_c have fast only; test_b has db only.
      3. Final Answer:

        test_a and test_c -> Option D
      4. Quick Check:

        fast and not db = test_a, test_c [OK]
      Hint: Use logical operators to combine markers correctly [OK]
      Common Mistakes:
      • Including tests marked only with db
      • Ignoring the 'not' operator
      • Assuming all tests run
      4. You run pytest -m slow but no tests run, even though some tests have @pytest.mark.slow. What is the most likely cause?
      medium
      A. Markers are not registered in pytest.ini
      B. You used -m instead of --m
      C. The tests are skipped by default
      D. The test files are missing

      Solution

      1. Step 1: Check marker registration

        Pytest requires custom markers to be registered in pytest.ini to avoid warnings and ensure correct filtering.
      2. Step 2: Understand effect of missing registration

        If markers are not registered, pytest may ignore them or not run tests filtered by them.
      3. Final Answer:

        Markers are not registered in pytest.ini -> Option A
      4. Quick Check:

        Unregistered markers cause no tests run = C [OK]
      Hint: Always register custom markers in pytest.ini [OK]
      Common Mistakes:
      • Confusing -m and --m options
      • Assuming tests are skipped by default
      • Not checking test file presence
      5. You have tests marked as api, ui, and db. You want to run tests that are either api or ui, but not db. Which command achieves this?
      hard
      A. pytest -m "api or (ui and not db)"
      B. pytest -m "api or ui and not db"
      C. pytest -m "(api or ui) and not db"
      D. pytest -m "api and ui and not db"

      Solution

      1. Step 1: Understand operator precedence

        Logical AND has higher precedence than OR, so parentheses are needed to group api or ui together.
      2. Step 2: Analyze each option

        pytest -m "(api or ui) and not db" correctly groups (api or ui) and excludes db with and not db.
      3. Final Answer:

        pytest -m "(api or ui) and not db" -> Option C
      4. Quick Check:

        Use parentheses to group OR conditions = A [OK]
      Hint: Use parentheses to group markers with OR before AND [OK]
      Common Mistakes:
      • Ignoring operator precedence without parentheses
      • Using AND instead of OR between api and ui
      • Including db tests by mistake
      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