Bird
Raised Fist0
PyTesttesting~5 mins

Arrange-Act-Assert pattern in PyTest - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the 'Arrange' step mean in the Arrange-Act-Assert pattern?
It means setting up everything needed for the test, like preparing data, objects, or environment before running the test action.
Click to reveal answer
beginner
In the Arrange-Act-Assert pattern, what is done during the 'Act' step?
The 'Act' step is where you perform the action or call the function you want to test.
Click to reveal answer
beginner
What is the purpose of the 'Assert' step in the Arrange-Act-Assert pattern?
To check if the result of the action matches the expected outcome, confirming the test passes or fails.
Click to reveal answer
intermediate
Why is it helpful to follow the Arrange-Act-Assert pattern in tests?
It keeps tests clear and organized, making it easier to understand what is being tested and why a test might fail.
Click to reveal answer
beginner
Show a simple pytest test function using the Arrange-Act-Assert pattern to test adding two numbers.
def test_add_numbers(): # Arrange a = 2 b = 3 # Act result = a + b # Assert assert result == 5
Click to reveal answer
What is the first step in the Arrange-Act-Assert pattern?
AAnalyze
BAct
CAssert
DArrange
During which step do you execute the function or action you want to test?
AAct
BAssert
CArrange
DAssign
What does the 'Assert' step check?
AIf the result matches the expected outcome
BIf the action was performed
CIf the test environment is ready
DIf the test data is correct
Which of these is NOT part of the Arrange-Act-Assert pattern?
AArrange
BAnalyze
CAssert
DAct
Why is the Arrange-Act-Assert pattern useful?
AIt removes the need for assertions
BIt makes tests run faster
CIt organizes tests clearly
DIt skips the setup step
Explain the three steps of the Arrange-Act-Assert pattern and why each is important.
Think about preparing, doing, and checking in a test.
You got /4 concepts.
    Write a simple pytest test using the Arrange-Act-Assert pattern to check if multiplying two numbers works correctly.
    Use variables for numbers, multiply them, then assert the product.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Arrange-Act-Assert pattern in pytest?
      easy
      A. To speed up test execution time
      B. To organize tests into clear steps for better readability
      C. To automatically generate test data
      D. To replace the need for assertions in tests

      Solution

      1. Step 1: Understand the pattern's goal

        The Arrange-Act-Assert pattern structures tests into three parts: setup, action, and verification.
      2. Step 2: Identify the main benefit

        This structure makes tests easier to read and maintain by clearly separating steps.
      3. Final Answer:

        To organize tests into clear steps for better readability -> Option B
      4. Quick Check:

        Arrange-Act-Assert = Organize tests clearly [OK]
      Hint: Remember: Arrange sets up, Act performs, Assert checks [OK]
      Common Mistakes:
      • Thinking it speeds up test execution
      • Confusing it with test data generation
      • Believing it removes the need for assertions
      2. Which of the following is the correct order of steps in the Arrange-Act-Assert pattern?
      easy
      A. Act, Arrange, Assert
      B. Assert, Arrange, Act
      C. Arrange, Act, Assert
      D. Act, Assert, Arrange

      Solution

      1. Step 1: Recall the pattern sequence

        The pattern always starts with Arrange (setup), then Act (perform action), and finally Assert (check results).
      2. Step 2: Match the correct order

        Only Arrange, Act, Assert follows this exact sequence.
      3. Final Answer:

        Arrange, Act, Assert -> Option C
      4. Quick Check:

        Order is Arrange -> Act -> Assert [OK]
      Hint: Think: Prepare, Do, Check in that order [OK]
      Common Mistakes:
      • Mixing up the order of steps
      • Starting with Assert before Act
      • Confusing Act and Arrange steps
      3. Given the following pytest test code, what will be the test result?
      def test_sum():
          # Arrange
          numbers = [1, 2, 3]
          expected = 6
      
          # Act
          result = sum(numbers)
      
          # Assert
          assert result == expected
      
      medium
      A. Test will pass because sum(numbers) equals expected
      B. Test will fail because sum is not defined
      C. Test will fail because expected is incorrect
      D. Test will error due to syntax mistake

      Solution

      1. Step 1: Analyze the Arrange step

        List numbers is [1, 2, 3] and expected sum is 6, which is correct.
      2. Step 2: Check the Act and Assert steps

        sum(numbers) calculates 6, matching expected. The assertion will pass.
      3. Final Answer:

        Test will pass because sum(numbers) equals expected -> Option A
      4. Quick Check:

        sum([1,2,3]) = 6, assertion true [OK]
      Hint: Check if actual equals expected in Assert step [OK]
      Common Mistakes:
      • Assuming sum is undefined
      • Thinking expected value is wrong
      • Looking for syntax errors where none exist
      4. Identify the error in this pytest test using Arrange-Act-Assert pattern:
      def test_uppercase():
          # Arrange
          text = "hello"
      
          # Act
          result = text.upper
      
          # Assert
          assert result == "HELLO"
      
      medium
      A. Missing parentheses in Act step calling upper()
      B. Incorrect expected value in Assert step
      C. Variable text is not defined in Arrange step
      D. Assert statement syntax is invalid

      Solution

      1. Step 1: Review the Act step

        text.upper is a method reference, missing parentheses to call it.
      2. Step 2: Understand the impact on Assert

        Without calling upper(), result is a method, not a string, so assertion fails.
      3. Final Answer:

        Missing parentheses in Act step calling upper() -> Option A
      4. Quick Check:

        Call methods with () to get results [OK]
      Hint: Remember to call methods with parentheses () [OK]
      Common Mistakes:
      • Thinking expected value is wrong
      • Assuming variable is undefined
      • Believing assert syntax is incorrect
      5. You want to test a function divide(a, b) that returns the division of two numbers. Using Arrange-Act-Assert, which test correctly checks that dividing by zero raises a ZeroDivisionError?
      hard
      A. def test_divide_zero(): # Arrange a, b = 10, 0 # Act result = divide(a, b) # Assert assert result == 0
      B. def test_divide_zero(): # Arrange a, b = 10, 0 # Act result = divide(a, b) # Assert assert result is None
      C. def test_divide_zero(): # Arrange a, b = 10, 0 # Act divide(a, b) # Assert assert True
      D. def test_divide_zero(): # Arrange a, b = 10, 0 # Act & Assert with pytest.raises(ZeroDivisionError): divide(a, b)

      Solution

      1. Step 1: Understand the test goal

        The test must verify that dividing by zero raises a ZeroDivisionError exception.
      2. Step 2: Identify correct pytest usage

        Using with pytest.raises(ZeroDivisionError): correctly checks for the exception during Act step.
      3. Final Answer:

        Using pytest.raises to check for ZeroDivisionError -> Option D
      4. Quick Check:

        Use pytest.raises to test exceptions [OK]
      Hint: Use pytest.raises to assert exceptions in tests [OK]
      Common Mistakes:
      • Ignoring exception and asserting wrong result
      • Not using pytest.raises for exception testing
      • Asserting True without checking error