Bird
Raised Fist0
PyTesttesting~5 mins

Why markers categorize and control tests in PyTest - Quick Recap

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of markers in pytest?
Markers help group and control tests so you can run specific sets easily, like running only slow tests or tests for a feature.
Click to reveal answer
beginner
How do markers improve test execution?
Markers let you select or skip tests based on labels, saving time by running only relevant tests.
Click to reveal answer
beginner
Give an example of a common pytest marker and its use.
The marker @pytest.mark.slow labels tests that take longer. You can run only fast tests by skipping slow ones.
Click to reveal answer
intermediate
Why is categorizing tests with markers helpful in large projects?
It helps organize tests by feature, speed, or type, making it easier to manage and run tests efficiently.
Click to reveal answer
beginner
What command runs tests with a specific marker in pytest?
Use pytest -m <marker_name> to run only tests with that marker, for example pytest -m slow runs tests marked as slow.
Click to reveal answer
What does the pytest marker @pytest.mark.skip do?
ASkips the test during execution
BRuns the test twice
CMarks the test as failed
DGroups the test with others
How can you run only tests marked as 'fast' in pytest?
Apytest -m fast
Bpytest --fast
Cpytest --only fast
Dpytest -r fast
Why use markers to categorize tests?
ATo change test code behavior
BTo make tests run faster automatically
CTo organize tests and control which run
DTo delete tests after running
Which pytest marker would you use to skip a test conditionally?
A@pytest.mark.run
B@pytest.mark.slow
C@pytest.mark.only
D@pytest.mark.skipif
What happens if you run pytest without any markers?
AOnly tests with markers run
BAll tests run regardless of markers
CNo tests run
DTests marked as skip run only
Explain why markers are useful for controlling test execution in pytest.
Think about how you might want to run only some tests in a big project.
You got /4 concepts.
    Describe how you would use markers to run only slow tests in pytest.
    Consider labeling tests and using a command to filter them.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using markers in pytest?
      easy
      A. To write tests faster by auto-generating code
      B. To change the Python version used for tests
      C. To automatically fix failing tests
      D. To group tests so you can run specific sets easily

      Solution

      1. Step 1: Understand what markers do in pytest

        Markers are labels you add to tests to group or categorize them.
      2. Step 2: Identify the main use of markers

        Markers help you run only certain groups of tests, saving time and focusing effort.
      3. Final Answer:

        To group tests so you can run specific sets easily -> Option D
      4. Quick Check:

        Markers group tests = B [OK]
      Hint: Markers help run selected tests quickly [OK]
      Common Mistakes:
      • Thinking markers auto-fix tests
      • Confusing markers with code generation
      • Believing markers change Python version
      2. Which of the following is the correct way to mark a test as 'slow' in pytest?
      easy
      A. @pytest.slow def test_example(): pass
      B. @pytest.mark.slow def test_example(): pass
      C. @slow_mark def test_example(): pass
      D. @mark.slow def test_example(): pass

      Solution

      1. Step 1: Recall pytest marker syntax

        Markers are used with @pytest.mark.<marker_name> before the test function.
      2. Step 2: Match the correct syntax

        Only '@pytest.mark.slow' is the correct way to mark a test as slow.
      3. Final Answer:

        @pytest.mark.slow\ndef test_example(): pass -> Option B
      4. Quick Check:

        Use @pytest.mark.marker_name = D [OK]
      Hint: Use @pytest.mark.marker_name to mark tests [OK]
      Common Mistakes:
      • Omitting 'pytest' before 'mark'
      • Using wrong decorator names
      • Confusing marker syntax with other decorators
      3. Given the code below, what tests will run when executing pytest -m "slow and not network"?
      @pytest.mark.slow
      def test_a(): pass
      
      @pytest.mark.network
      def test_b(): pass
      
      @pytest.mark.slow
      @pytest.mark.network
      def test_c(): pass
      
      def test_d(): pass
      medium
      A. test_b and test_c
      B. test_a and test_c
      C. Only test_a
      D. test_a, test_b, test_c, and test_d

      Solution

      1. Step 1: Understand the marker expression

        The command runs tests marked 'slow' but NOT marked 'network'.
      2. Step 2: Check each test's markers

        test_a is 'slow' only (runs), test_b is 'network' only (excluded), test_c is both 'slow' and 'network' (excluded), test_d has no markers (excluded).
      3. Final Answer:

        Only test_a -> Option C
      4. Quick Check:

        Run tests with slow and not network = C [OK]
      Hint: Use 'and not' to exclude markers in pytest -m [OK]
      Common Mistakes:
      • Including tests with 'network' marker
      • Running unmarked tests by default
      • Misunderstanding boolean logic in marker expressions
      4. What is wrong with this pytest marker usage?
      @pytest.mark.skipif(sys.platform == 'win32')
      def test_func():
          assert True
      medium
      A. Missing import of sys module
      B. Incorrect marker name 'skipif'
      C. Missing parentheses after skipif
      D. Cannot use conditions in markers

      Solution

      1. Step 1: Check the code for required imports

        The code uses 'sys.platform' but does not import 'sys'.
      2. Step 2: Verify marker syntax

        '@pytest.mark.skipif(condition)' is correct syntax, so no error there.
      3. Final Answer:

        Missing import of sys module -> Option A
      4. Quick Check:

        Use imports for conditions in markers [OK]
      Hint: Always import modules used in marker conditions [OK]
      Common Mistakes:
      • Forgetting to import modules like sys
      • Misnaming skipif marker
      • Using skipif without condition parentheses
      5. You want to run only tests marked as 'database' but skip those also marked 'slow'. Which pytest command achieves this?
      hard
      A. pytest -m "database and not slow"
      B. pytest -m "slow and not database"
      C. pytest -m "database or slow"
      D. pytest -m "not database and slow"

      Solution

      1. Step 1: Understand the requirement

        Run tests with 'database' marker but exclude those with 'slow'.
      2. Step 2: Translate to pytest marker expression

        Use 'database and not slow' to select tests marked database but not slow.
      3. Final Answer:

        pytest -m "database and not slow" -> Option A
      4. Quick Check:

        Use 'and not' to exclude markers [OK]
      Hint: Combine markers with 'and not' to exclude tests [OK]
      Common Mistakes:
      • Swapping marker names in the expression
      • Using 'or' instead of 'and not'
      • Misunderstanding marker logic in pytest -m
      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