Bird
Raised Fist0
PyTesttesting~15 mins

Test classes in PyTest - Build an Automation Script

Choose your learning style10 modes available
Verify calculator operations using pytest test class
Preconditions (2)
Step 1: Create a test class named TestCalculator
Step 2: Inside the class, write a setup method to create a Calculator instance
Step 3: Write a test method test_add to verify addition of 2 and 3 equals 5
Step 4: Write a test method test_subtract to verify subtraction of 5 from 10 equals 5
Step 5: Write a test method test_multiply to verify multiplication of 4 and 3 equals 12
Step 6: Write a test method test_divide to verify division of 10 by 2 equals 5
Step 7: Run pytest and observe the test results
✅ Expected Result: All test methods pass confirming Calculator operations work correctly
Automation Requirements - pytest
Assertions Needed:
assert addition result equals expected
assert subtraction result equals expected
assert multiplication result equals expected
assert division result equals expected
Best Practices:
Use test classes to group related tests
Use setup method for common test setup
Use clear and descriptive test method names
Use assert statements for validation
Automated Solution
PyTest
import pytest

class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

    def multiply(self, a, b):
        return a * b

    def divide(self, a, b):
        if b == 0:
            raise ValueError("Cannot divide by zero")
        return a / b

class TestCalculator:
    def setup_method(self):
        self.calc = Calculator()

    def test_add(self):
        result = self.calc.add(2, 3)
        assert result == 5

    def test_subtract(self):
        result = self.calc.subtract(10, 5)
        assert result == 5

    def test_multiply(self):
        result = self.calc.multiply(4, 3)
        assert result == 12

    def test_divide(self):
        result = self.calc.divide(10, 2)
        assert result == 5

The Calculator class provides basic math operations.

The TestCalculator class groups tests for these operations.

The setup_method runs before each test to create a fresh Calculator instance.

Each test method calls one Calculator method and asserts the result matches the expected value.

This structure keeps tests organized and avoids repeating setup code.

Common Mistakes - 4 Pitfalls
Not using a test class and writing standalone test functions
Not using setup_method and creating Calculator instance inside each test
Using print statements instead of assert for validation
Using unclear test method names like test1, test2
Bonus Challenge

Now add data-driven testing with 3 different input sets for the add method

Show Hint

Practice

(1/5)
1. What is the main purpose of using test classes in pytest?
easy
A. To avoid writing assertions
B. To group related tests for better organization
C. To make tests run faster
D. To skip tests automatically

Solution

  1. Step 1: Understand test grouping

    Test classes help organize related test functions together in one place.
  2. Step 2: Recognize benefits

    This grouping improves readability and allows shared setup for tests.
  3. Final Answer:

    To group related tests for better organization -> Option B
  4. Quick Check:

    Test classes group tests = C [OK]
Hint: Test classes group related tests logically [OK]
Common Mistakes:
  • Thinking test classes speed up tests
  • Believing test classes skip tests
  • Assuming test classes remove need for assertions
2. Which of the following is the correct way to name a pytest test class?
easy
A. class testExample:
B. class ExampleTest:
C. class TestExample:
D. class exampleTest:

Solution

  1. Step 1: Recall pytest naming rules

    Pytest requires test classes to start with 'Test' exactly.
  2. Step 2: Check options

    Only 'TestExample' starts with 'Test' correctly and follows naming conventions.
  3. Final Answer:

    class TestExample: -> Option C
  4. Quick Check:

    Class name starts with 'Test' = D [OK]
Hint: Test classes must start with 'Test' exactly [OK]
Common Mistakes:
  • Starting class name with lowercase 'test'
  • Placing 'Test' at the end of class name
  • Using mixed case that doesn't start with 'Test'
3. Given the code below, what will pytest report when running these tests?
class TestMath:
    def test_add(self):
        assert 1 + 1 == 2

    def test_subtract(self):
        assert 5 - 3 == 1
medium
A. 1 test passed, 1 test failed
B. 2 tests passed
C. 2 tests failed
D. Syntax error, tests won't run

Solution

  1. Step 1: Check each assertion

    test_add asserts 1+1==2 which is True; test_subtract asserts 5-3==1 which is False.
  2. Step 2: Determine test results

    One test passes (test_add), one test fails (test_subtract).
  3. Final Answer:

    1 test passed, 1 test failed -> Option A
  4. Quick Check:

    Assertions true/false = 1 pass, 1 fail [OK]
Hint: Check each assertion result carefully [OK]
Common Mistakes:
  • Assuming both tests pass without checking assertions
  • Ignoring that 5 - 3 != 1
  • Thinking syntax error due to indentation
4. Identify the error in the following pytest test class:
class TestCalc:
    def test_multiply(self):
        assert 2 * 3 == 6
    
    def multiply_test(self):
        assert 4 * 5 == 20
medium
A. Method 'multiply_test' will not be recognized as a test
B. Class name must not start with 'Test'
C. Missing assert statement in 'test_multiply'
D. Indentation error in method definitions

Solution

  1. Step 1: Check method naming rules

    Pytest requires test methods to start with 'test_'. 'multiply_test' does not.
  2. Step 2: Understand consequences

    Method 'multiply_test' will be ignored by pytest and not run as a test.
  3. Final Answer:

    Method 'multiply_test' will not be recognized as a test -> Option A
  4. Quick Check:

    Test methods start with 'test_' = A [OK]
Hint: Test methods must start with 'test_' [OK]
Common Mistakes:
  • Thinking class name can't start with 'Test'
  • Missing assert in test method
  • Assuming indentation error without evidence
5. How can you share setup code for all tests inside a pytest test class?
hard
A. Define a method named 'setup_method' inside the class
B. Use a global variable outside the class
C. Write setup code inside each test method separately
D. Define a method named 'setup_class' inside the class

Solution

  1. Step 1: Understand pytest setup methods

    Pytest supports 'setup_class' to run setup once for all tests in a class.
  2. Step 2: Compare options

    'setup_method' runs before each test method, not once for all; global variables and repeated code are not best practice.
  3. Final Answer:

    Define a method named 'setup_class' inside the class -> Option D
  4. Quick Check:

    Class-wide setup uses 'setup_class' = B [OK]
Hint: Use 'setup_class' for one-time class setup [OK]
Common Mistakes:
  • Confusing 'setup_method' with class-wide setup
  • Using global variables instead of setup methods
  • Repeating setup code in every test method
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