🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
NEWSLIVESearch All Content
đŸ’ŧ Servicesâ„šī¸ Aboutâœ‰ī¸ ContactView Pricing Plansfrom $10

Advanced Testing

Python TestingđŸŸĸ Free Lesson

Advertisement

Advanced Testing

Mocking, fixtures, parameterized tests, and test patterns.

Overview

Master advanced testing techniques.

Mocking

python
from unittest.mock import Mock, patch, MagicMock
import requests

# Basic mock
mock_response = Mock()
mock_response.status_code = 200
mock_response.json.return_value = {"result": "success"}

# Patching
@patch('requests.get')
def test_api_call(mock_get):
    mock_get.return_value.status_code = 200
    mock_get.return_value.json.return_value = {"data": "test"}
    
    result = requests.get("https://api.example.com")
    assert result.status_code == 200
    mock_get.assert_called_once()

# MagicMock for complex objects
mock_db = MagicMock()
mock_db.users.find.return_value = [{"name": "Alice"}]

users = mock_db.users.find({"active": True})
assert len(users) == 1

Fixtures

python
import pytest

@pytest.fixture
def sample_data():
    return {"users": [{"name": "Alice", "age": 25}]}

@pytest.fixture
def database():
    db = create_test_database()
    yield db
    db.cleanup()

def test_user_creation(sample_data, database):
    user = create_user(sample_data["users"][0])
    database.save(user)
    assert database.get(user.id) is not None

# Parametrized fixtures
@pytest.fixture(params=[1, 2, 3])
def number(request):
    return request.param

def test_numbers(number):
    assert number > 0

Parameterized Tests

python
@pytest.mark.parametrize("input,expected", [
    (1, 2),
    (2, 4),
    (3, 6),
    (4, 8),
])
def test_double(input, expected):
    assert double(input) == expected

# Multiple parameters
@pytest.mark.parametrize("a,b,expected", [
    (1, 2, 3),
    (2, 3, 5),
    (3, 4, 7),
])
def test_add(a, b, expected):
    assert add(a, b) == expected

Practice

Write tests for an API endpoint with mocking and fixtures.

—
☆☆☆☆☆
0 ratings

Rate & Feedback

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement